Advertisement
Guest User

Dolphin Beyond Good and Evil bad_ps_0000.txt

a guest
May 7th, 2013
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.27 KB | None | 0 0
  1. //Pixel Shader for TEV stages
  2. //2 TEV stages, 2 texgens, XXX IND stages
  3. sampler samp0 : register(s0), samp1 : register(s1), samp2 : register(s2), samp3 : register(s3), samp4 : register(s4), samp5 : register(s5), samp6 : register(s6), samp7 : register(s7);
  4. Texture2D Tex0 : register(t0), Tex1 : register(t1), Tex2 : register(t2), Tex3 : register(t3), Tex4 : register(t4), Tex5 : register(t5), Tex6 : register(t6), Tex7 : register(t7);
  5.  
  6. uniform float4 color[4] : register(c0);
  7. uniform float4 k[4] : register(c4);
  8. uniform float4 alphaRef[1] : register(c8);
  9. uniform float4 texdim[8] : register(c9);
  10. uniform float4 czbias[2] : register(c17);
  11. uniform float4 cindscale[2] : register(c19);
  12. uniform float4 cindmtx[6] : register(c21);
  13. uniform float4 cfog[3] : register(c27);
  14. uniform float4 cPLights[40] : register(c30);
  15. uniform float4 cPmtrl[4] : register(c70);
  16. void main(
  17. out float4 ocol0 : SV_Target0,
  18. in float4 rawpos : SV_Position,
  19. in centroid float4 colors_0 : COLOR0,
  20. in centroid float4 colors_1 : COLOR1,
  21. in centroid float3 uv0 : TEXCOORD0,
  22. in centroid float3 uv1 : TEXCOORD1,
  23. in centroid float4 clipPos : TEXCOORD2,
  24. in centroid float4 Normal : TEXCOORD3 ) {
  25. 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);
  26. float3 comp16 = float3(1.0f, 255.0f, 0.0f), comp24 = float3(1.0f, 255.0f, 255.0f*255.0f);
  27. float alphabump=0.0f;
  28. float3 tevcoord=float3(0.0f, 0.0f, 0.0f);
  29. float2 wrappedcoord=float2(0.0f,0.0f), tempcoord=float2(0.0f,0.0f);
  30. float4 cc0=float4(0.0f,0.0f,0.0f,0.0f), cc1=float4(0.0f,0.0f,0.0f,0.0f);
  31. float4 cc2=float4(0.0f,0.0f,0.0f,0.0f), cprev=float4(0.0f,0.0f,0.0f,0.0f);
  32. float4 crastemp=float4(0.0f,0.0f,0.0f,0.0f),ckonsttemp=float4(0.0f,0.0f,0.0f,0.0f);
  33.  
  34. float3 _norm0 = normalize(Normal.xyz);
  35.  
  36. float3 pos = float3(clipPos.x,clipPos.y,Normal.w);
  37. float4 mat, lacc;
  38. float3 ldir, h;
  39. float dist, dist2, attn;
  40. {
  41. mat = colors_0;
  42. lacc = float4(1.0f, 1.0f, 1.0f, 1.0f);
  43. lacc.w = 1.0f;
  44. colors_0 = mat * saturate(lacc);
  45. }
  46. {
  47. mat = cPmtrl[3];
  48. lacc = cPmtrl[1];
  49. lacc.w = cPmtrl[1].w;
  50. ldir = cPLights[0 + 3].xyz - pos.xyz;
  51. dist2 = dot(ldir, ldir);
  52. dist = sqrt(dist2);
  53. ldir = ldir / dist;
  54. attn = max(0.0f, dot(ldir, cPLights[0 + 4].xyz));
  55. attn = max(0.0f, dot(cPLights[0 + 1].xyz, float3(1.0f, attn, attn*attn))) / dot(cPLights[0 + 2].xyz, float3(1.0f,dist,dist2));
  56. lacc.xyzw += attn * max(0.0f,dot(ldir, _norm0)) * cPLights[0].xyzw;
  57.  
  58. ldir = cPLights[5 + 3].xyz - pos.xyz;
  59. dist2 = dot(ldir, ldir);
  60. dist = sqrt(dist2);
  61. ldir = ldir / dist;
  62. attn = max(0.0f, dot(ldir, cPLights[5 + 4].xyz));
  63. attn = max(0.0f, dot(cPLights[5 + 1].xyz, float3(1.0f, attn, attn*attn))) / dot(cPLights[5 + 2].xyz, float3(1.0f,dist,dist2));
  64. lacc.xyzw += attn * max(0.0f,dot(ldir, _norm0)) * cPLights[5].xyzw;
  65.  
  66. colors_1 = mat * saturate(lacc);
  67. }
  68. clipPos = float4(rawpos.x, rawpos.y, clipPos.z, clipPos.w);
  69. uv0.xy = uv0.xy * texdim[0].zw;
  70. uv1.xy = uv1.xy * texdim[1].zw;
  71. // TEV stage 0
  72. rastemp = colors_0.rgba;
  73. crastemp = frac(rastemp * (255.0f/256.0f)) * (256.0f/255.0f);
  74. tevcoord.xy = uv0.xy;
  75. textemp=Tex0.Sample(samp0,tevcoord.xy * texdim[0].xy).rgba;
  76. // color combine
  77. prev.rgb = saturate((textemp.rgb)*(crastemp.rgb));
  78. // alpha combine
  79. prev.a = saturate(textemp.a*crastemp.a);
  80.  
  81. // TEV done
  82. // TEV stage 1
  83. tevcoord.xy = uv1.xy;
  84. textemp=Tex1.Sample(samp1,tevcoord.xy * texdim[1].xy).rgba;
  85. konsttemp = float4(0.25f,0.25f,0.25f, ERROR9);
  86. ckonsttemp = frac(konsttemp * (255.0f/256.0f)) * (256.0f/255.0f);
  87. cprev = prev;
  88. // color combine
  89. prev.rgb = saturate((prev.rgb)+float3(0.0f, 0.0f, 0.0f));
  90. // alpha combine
  91. prev.a = saturate(textemp.a+cprev.a*(1.0f-ckonsttemp.a));
  92.  
  93. // TEV done
  94. if(!( (true) && (abs( prev.a - alphaRef[0].g ) >= (0.5f/255.0f)))) {
  95. ocol0 = float4(0.0f, 0.0f, 0.0f, 0.0f);
  96. discard;
  97. }
  98. float zCoord = rawpos.z;
  99. float ze = cfog[1].x / (cfog[1].y - (zCoord / cfog[1].w));
  100. float x_adjust = (2.0f * (clipPos.x / cfog[2].y)) - 1.0f - cfog[2].x;
  101. x_adjust = sqrt(x_adjust * x_adjust + cfog[2].z * cfog[2].z) / cfog[2].z;
  102. ze *= x_adjust;
  103. float fog = saturate(ze - cfog[1].z);
  104. prev.rgb = lerp(prev.rgb, cfog[0].rgb, fog);
  105. ocol0 = prev;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement