- Pixel shader:
- //Pixel Shader for TEV stages
- //1 TEV stages, 0 texgens, 0 IND stages
- uniform sampler2D samp0 : register(s0), samp1 : register(s1), samp2 : register(s2), samp3 : register(s3), samp4 : register(s4), samp5 : register(s5), samp6 : register(s6), samp7 : register(s7);
- uniform float4 color[4] : register(c0);
- uniform float4 k[4] : register(c4);
- uniform float4 alphaRef[1] : register(c8);
- uniform float4 texdim[8] : register(c9);
- uniform float4 czbias[2] : register(c17);
- uniform float4 cindscale[2] : register(c19);
- uniform float4 cindmtx[6] : register(c21);
- uniform float4 cfog[2] : register(c27);
- void main(
- out float4 ocol0 : COLOR0,
- in float4 rawpos : POSITION,
- in float4 colors_0 : COLOR0,
- in float4 colors_1 : COLOR1,
- in float4 clipPos : TEXCOORD0 ) {
- float4 c0 = color[1], c1 = color[2], c2 = color[3], prev = float4(0.0f, 0.0f, 0.0f, 0.0f), textemp = float4(0.0f, 0.0f, 0.0f, 0.0f), rastemp = float4(0.0f, 0.0f, 0.0f, 0.0f), konsttemp = float4(0.0f, 0.0f, 0.0f, 0.0f);
- float3 comp16 = float3(1.0f, 255.0f, 0.0f), comp24 = float3(1.0f, 255.0f, 255.0f*255.0f);
- float4 alphabump=0;
- float3 tevcoord;
- float2 wrappedcoord, tempcoord;
- float4 cc0, cc1, cc2, cprev,crastemp,ckonsttemp;
- clipPos = float4(rawpos.x, rawpos.y, clipPos.z, clipPos.w);
- float3 uv0 = float3(0.0f, 0.0f, 0.0f);
- rastemp = colors_0.rgba;
- crastemp = frac(4.0f + rastemp * (255.0f/256.0f)) * (256.0f/255.0f);
- textemp = float4(1.0f, 1.0f, 1.0f, 1.0f);
- konsttemp = float4(k[0].rgb, 1.0f);
- ckonsttemp = frac(4.0f + konsttemp * (255.0f/256.0f)) * (256.0f/255.0f);
- prev.rgb = saturate(2.0f*((crastemp.rgb)*(ckonsttemp.rgb)));
- prev.a = saturate(rastemp.a+float4(0.0f, 0.0f, 0.0f, 0.0f).a);
- ocol0 = prev;
- }
- Vertex shader:
- //Vertex Shader: comp:400,
- typedef struct { float4 T0, T1, T2; float4 N0, N1, N2; } s_cpnmtx;
- typedef struct { float4 t; } FLT4;
- typedef struct { FLT4 T[24]; } s_ctexmtx;
- typedef struct { FLT4 T[64]; } s_ctrmtx;
- typedef struct { FLT4 T[32]; } s_cnmtx;
- typedef struct { FLT4 T[64]; } s_cpostmtx;
- typedef struct { float4 col; float4 cosatt; float4 distatt; float4 pos; float4 dir; } Light;
- typedef struct { Light lights[8]; } s_clights;
- typedef struct { float4 C0, C1, C2, C3; } s_cmtrl;
- typedef struct { float4 T0, T1, T2, T3; } s_cproj;
- struct VS_OUTPUT {
- float4 pos : POSITION;
- float4 colors_0 : COLOR0;
- float4 colors_1 : COLOR1;
- float4 clipPos : TEXCOORD0;
- };
- uniform s_ctrmtx ctrmtx : register(c78);
- uniform s_ctexmtx ctexmtx : register(c54);
- uniform s_cnmtx cnmtx : register(c142);
- uniform s_cpnmtx cpnmtx : register(c0);
- uniform s_cpostmtx cpostmtx : register(c174);
- uniform s_clights clights : register(c14);
- uniform s_cmtrl cmtrl : register(c10);
- uniform s_cproj cproj : register(c6);
- uniform float4 cDepth : register(c238);
- VS_OUTPUT main(
- float3 rawnorm0 : NORMAL0,
- float4 rawpos : POSITION) {
- VS_OUTPUT o;
- float4 pos = float4(dot(cpnmtx.T0, rawpos), dot(cpnmtx.T1, rawpos), dot(cpnmtx.T2, rawpos), 1.0f);
- float3 _norm0 = normalize(float3(dot(cpnmtx.N0.xyz, rawnorm0), dot(cpnmtx.N1.xyz, rawnorm0), dot(cpnmtx.N2.xyz, rawnorm0)));
- o.pos = float4(dot(cproj.T0, pos), dot(cproj.T1, pos), dot(cproj.T2, pos), dot(cproj.T3, pos));
- float4 mat, lacc;
- float3 ldir, h;
- float dist, dist2, attn;
- {
- mat = cmtrl.C2;
- lacc = cmtrl.C0;
- lacc.w = 1.0f;
- ldir = clights.lights[0].pos.xyz - pos.xyz;
- dist2 = dot(ldir, ldir);
- dist = sqrt(dist2);
- ldir = ldir / dist;
- attn = max(0.0f, dot(ldir, clights.lights[0].dir.xyz));
- attn = max(0.0f, dot(clights.lights[0].cosatt.xyz, float3(1.0f, attn, attn*attn))) / dot(clights.lights[0].distatt.xyz, float3(1.0f,dist,dist2));
- lacc.xyz += attn * max(0.0f,dot(ldir, _norm0)) * clights.lights[0].col.xyz;
- o.colors_0 = mat * saturate(lacc);
- }
- o.colors_1 = o.colors_0;
- float4 coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
- o.clipPos = float4(pos.x,pos.y,o.pos.z,o.pos.w);
- o.pos.z = cDepth.x * o.pos.w + o.pos.z * cDepth.y;
- return o;
- }