All pastes #549166 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-06-08 00:47 UTC
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
}

}