//#include "common.h" //#include "lmodel.h" //#include "shadow.h" // // Parameters: // // float4 Ldynamic_color; // float4 Ldynamic_dir; // float3 T; // float4x4 m_shadow; // float3x4 m_sunmask; // sampler_2D s_accumulator; // sampler_2D s_lmap; // sampler_t2D s_normal; // sampler_2D s_position; // sampler_2D s_smap; // // // Registers: // // Name Reg Size // -------------- ----- ---- // m_sunmask c0 4 // m_shadow c4 4 // Ldynamic_color c8 1 // Ldynamic_dir c9 1 // T c10 1 // s_smap s0 1 // s_position s1 1 // s_normal s2 1 // s_lmap s3 1 // s_accumulator s4 1 // float4 Ldynamic_color; float4 Ldynamic_dir; float3 T; float4x4 m_shadow; float3x4 m_sunmask; uniform sampler2D s_accumulator; uniform sampler2D s_lmap; uniform sampler2D s_normal; uniform sampler2D s_position; uniform sampler2D s_smap; float4 main( float2 tc : TEXCOORD0 ) : COLOR { const float4 _11 = {1, 10, 1.53846157, -1}; const float4 _12 = {-0.000585937523, 0, 1, 1024}; const float4 _13 = {1.44269502, 0.625, 0.400000006, 0.600000024}; const float4 _14 = {0.000585937523, -0.000585937523, 0.25, 0}; float4 a, b, c, d, e; texld a, tc, s_position b = a.y * m_shadow[1] b = m_shadow[0] * a.x + b b = m_shadow[2] * a.z + b b = b + m_shadow[3] rcp a.w, b.w c.xy = b * a.w + _12.x texld d, c, s_smap c.xy = c * _12.w d = b.z * a.w + -d cmp d, d, _12.y, _12.z frc c.xy, c add_pp c.zw, -c.xyxy, _11.x e = ((half)c.xyyw) * ((half)c.wzxz) dp4_pp b.w, d, e c.xy = b * a.w + _14 texld d, c, s_smap c.xy = c * _12.w d = b.z * a.w + -d cmp d, d, _12.y, _12.z frc c.xy, c add_pp c.zw, -c.xyxy, _11.x e = ((half)c.xyyw) * ((half)c.wzxz) dp4_pp c.x, d, e add_pp b.w, b.w, c.x c.xy = b * a.w + _14.yxzw texld d, c, s_smap c.xy = c * _12.w d = b.z * a.w + -d cmp d, d, _12.y, _12.z frc c.xy, c add_pp c.zw, -c.xyxy, _11.x e = ((half)c.xyyw) * ((half)c.wzxz) dp4_pp c.x, d, e add_pp b.w, b.w, c.x b.xy = b * a.w + -_12.x texld c, b, s_smap b.xy = b * _12.w c = b.z * a.w + -c cmp c, c, _12.y, _12.z frc b.xy, b add_pp d.xy, -b, _11.x e.xy = ((half)b) * ((half)d.yxzw) e.z = ((half)b.y) * ((half)b.x) e.w = ((half)d.y) * ((half)d.x) dp4_pp a.w, c, e add_pp a.w, b.w, a.w b.xy = a.y * m_sunmask[1] b.xy = m_sunmask[0] * a.x + b b.xy = m_sunmask[2] * a.z + b b.xy = b + m_sunmask[3] texld_pp b, b, s_lmap a.w = ((half)a.w) * ((half)b.w) a.w = ((half)a.w) * ((half)_14.z) dp3_pp b.x, a, a rsq_pp b.x, b.x mad_pp a.xyz, a, -b.x, -Ldynamic_dir dp3_pp b.x, a, a rsq_pp b.x, b.x texld_pp c, v_TEXCOORD0, s_normal nrm_pp d.xyz, c dp3_sat_pp b.y, d, -Ldynamic_dir c.xyz = d * b.y a.xyz = a * b.x + -c nrm c.xyz, a dp3 a.x, T, c a.y = -a.x + _11.x a.y = a.y * _11.y a.x = a.x * _11.z + a.y a.y = b.y + _11.w a.x = a.x * a.y rcp a.y, b.y a.x = a.x * a.y a.x = a.x * _13.x exp a.x, a.x a.x = b.y * a.x a.y = b.y * b.y a.x = a.x * _13.y + a.y mad_sat a.y, b.y, _13.z, _13.w a.y = b.y * a.y mad_pp a.x, a.y, -Ldynamic_dir.w, a.x b = ((half)a.x) * ((half)Ldynamic_color) texld_pp c, v_TEXCOORD0, s_accumulator mad_pp result, b, a.w, c }