init
This commit is contained in:
commit
2fe6ca2f65
1473 changed files with 251771 additions and 0 deletions
47
gamedata/shaders/r2/hmodel.hlsli
Normal file
47
gamedata/shaders/r2/hmodel.hlsli
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#ifndef HMODEL_H
|
||||
#define HMODEL_H
|
||||
|
||||
#include "common.hlsli"
|
||||
|
||||
uniform samplerCUBE env_s0;
|
||||
uniform samplerCUBE env_s1;
|
||||
uniform samplerCUBE sky_s0;
|
||||
uniform samplerCUBE sky_s1;
|
||||
|
||||
void hmodel(out float3 hdiffuse, out float3 hspecular,
|
||||
float m, float h, float s, float3 Pnt, float3 normal)
|
||||
{
|
||||
// hscale - something like diffuse reflection
|
||||
float3 nw = mul(m_invV, normal);
|
||||
float hscale = h;
|
||||
|
||||
#ifdef USE_GAMMA_22
|
||||
hscale = (hscale * hscale); // make it more linear
|
||||
#endif
|
||||
|
||||
// reflection vector
|
||||
float3 v2PntL = normalize(Pnt);
|
||||
float3 v2Pnt = mul(m_invV, v2PntL);
|
||||
float3 vreflect = reflect(v2Pnt, nw);
|
||||
float hspec = .5h + .5h * dot(vreflect, v2Pnt);
|
||||
|
||||
// material
|
||||
float4 light = tex3D(s_material, float3(hscale, hspec, m)).xxxy;
|
||||
|
||||
// diffuse color
|
||||
float3 e0d = texCUBElod(env_s0, float4(nw, 0.0f));
|
||||
float3 e1d = texCUBElod(env_s1, float4(nw, 0.0f));
|
||||
float3 env_d = L_hemi_color.xyz * lerp(e0d, e1d, L_hemi_color.w);
|
||||
env_d *= env_d; // contrast
|
||||
hdiffuse = env_d * light.xyz + L_ambient.rgb;
|
||||
|
||||
// specular color
|
||||
vreflect.y = vreflect.y * 2 - 1;
|
||||
|
||||
float3 e0s = texCUBElod(env_s0, float4(vreflect, 0.0f));
|
||||
float3 e1s = texCUBElod(env_s1, float4(vreflect, 0.0f));
|
||||
float3 env_s = L_hemi_color.xyz * lerp(e0s, e1s, L_hemi_color.w);
|
||||
env_s *= env_s;
|
||||
hspecular = env_s * light.w * s;
|
||||
}
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue