rendered paste body#include "common.h"
#include "lmodel.h"
#include "shadow.h"
//
// Parameters:
//
// float4 Ldynamic_color;
// float4 Ldynamic_dir;
// float3 T;
// float4x4 m_shadow;
// float3x4 m_sunmask;
// sampler2D s_accumulator;
// sampler2D s_lmap;
// sampler2D s_normal;
// sampler2D s_position;
// sampler2D 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 main( float2 tc : TEXCOORDS0, RD0, float4 tcJ : TEXCOORD1 ) : COLOR {
const float4 c11 = { 1, 10, 1.53846157, -1 }
const float4 c12 = { -0.000585937523, 0, 1, 1024 }
const float4 c13 = { 1.44269502, 0.625, 0.400000006, 0.600000024 }
const float4 c14 = { 0.000585937523, -0.000585937523, 0.25, 0 }
asm {
ps_3_0
dcl_texcoord v0.xy
dcl_2d s_smap
dcl_2d s_position
dcl_2d s_normal
dcl_2d s_lmap
dcl_2d s_accumulator
texld r0, v0, s_position
mul r1, r0.y, c5
mad r1, m_shadow, r0.x, r1
mad r1, c6, r0.z, r1
add r1, r1, c7
rcp r0.w, r1.w
mad r2.xy, r1, r0.w, c12.x
texld r3, r2, s_smap
mul r2.xy, r2, c12.w
mad r3, r1.z, r0.w, -r3
cmp r3, r3, c12.y, c12.z
frc r2.xy, r2
add_pp r2.zw, -r2.xyxy, c11.x
mul_pp r4, r2.xyyw, r2.wzxz
dp4_pp r1.w, r3, r4
mad r2.xy, r1, r0.w, c14
texld r3, r2, s_smap
mul r2.xy, r2, c12.w
mad r3, r1.z, r0.w, -r3
cmp r3, r3, c12.y, c12.z
frc r2.xy, r2
add_pp r2.zw, -r2.xyxy, c11.x
mul_pp r4, r2.xyyw, r2.wzxz
dp4_pp r2.x, r3, r4
add_pp r1.w, r1.w, r2.x
mad r2.xy, r1, r0.w, c14.yxzw
texld r3, r2, s_smap
mul r2.xy, r2, c12.w
mad r3, r1.z, r0.w, -r3
cmp r3, r3, c12.y, c12.z
frc r2.xy, r2
add_pp r2.zw, -r2.xyxy, c11.x
mul_pp r4, r2.xyyw, r2.wzxz
dp4_pp r2.x, r3, r4
add_pp r1.w, r1.w, r2.x
mad r1.xy, r1, r0.w, -c12.x
texld r2, r1, s_smap
mul r1.xy, r1, c12.w
mad r2, r1.z, r0.w, -r2
cmp r2, r2, c12.y, c12.z
frc r1.xy, r1
add_pp r3.xy, -r1, c11.x
mul_pp r4.xy, r1, r3.yxzw
mul_pp r4.z, r1.y, r1.x
mul_pp r4.w, r3.y, r3.x
dp4_pp r0.w, r2, r4
add_pp r0.w, r1.w, r0.w
mul r1.xy, r0.y, c1
mad r1.xy, m_sunmask, r0.x, r1
mad r1.xy, c2, r0.z, r1
add r1.xy, r1, c3
texld_pp r1, r1, s_lmap
mul_pp r0.w, r0.w, r1.w
mul_pp r0.w, r0.w, c14.z
dp3_pp r1.x, r0, r0
rsq_pp r1.x, r1.x
mad_pp r0.xyz, r0, -r1.x, -Ldynamic_dir
dp3_pp r1.x, r0, r0
rsq_pp r1.x, r1.x
texld_pp r2, v0, s_normal
nrm_pp r3.xyz, r2
dp3_sat_pp r1.y, r3, -Ldynamic_dir
mul r2.xyz, r3, r1.y
mad r0.xyz, r0, r1.x, -r2
nrm r2.xyz, r0
dp3 r0.x, T, r2
add r0.y, -r0.x, c11.x
mul r0.y, r0.y, c11.y
mad r0.x, r0.x, c11.z, r0.y
add r0.y, r1.y, c11.w
mul r0.x, r0.x, r0.y
rcp r0.y, r1.y
mul r0.x, r0.x, r0.y
mul r0.x, r0.x, c13.x
exp r0.x, r0.x
mul r0.x, r1.y, r0.x
mul r0.y, r1.y, r1.y
mad r0.x, r0.x, c13.y, r0.y
mad_sat r0.y, r1.y, c13.z, c13.w
mul r0.y, r1.y, r0.y
mad_pp r0.x, r0.y, -Ldynamic_dir.w, r0.x
mul_pp r1, r0.x, Ldynamic_color
texld_pp r2, v0, s_accumulator
mad_pp oC0, r1, r0.w, r2
}
}