home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2008 January / Cybermycha 1_2008.iso / Data.cab / _10EE458D294C46D0BDBBAD46B50965F9 < prev    next >
Encoding:
Text File  |  2004-07-27  |  1.2 KB  |  46 lines

  1.  
  2. hlsl("
  3. #include <common_hlsl.h>
  4. #include <cardef.h>
  5.  
  6. sampler2D    sColor: register(s0);     
  7. samplerCUBE    sDiffuseCubemap: register(s1);
  8. samplerCUBE sCubemap: register(s2);
  9. // sampler2D    sNormalmap: register(s3);
  10.  
  11. static const float3 FlatNormal = float3(0.0f, 0.0f, 1.0f);
  12.  
  13. struct PS_INPUT
  14. {
  15.     HALF2      uvColor : TEXCOORD0;
  16.     float3      E : TEXCOORD1;
  17.     float3x3    tangentSpaceTranspose: TEXCOORD2;
  18. };    
  19.     
  20. HALF4 main( PS_INPUT input ): COLOR {
  21.  
  22. //    HALF3 Normalmap = tex2D( sNormalmap, input.uvColor )*2-1;
  23.     HALF3 Normalmap = FlatNormal;
  24.  
  25.     HALF3 R =  reflect( input.E, Normalmap );
  26.     input.E = normalize( input.E );
  27.     
  28.     HALF3 uvwDiffuseCubemap = mul( -Normalmap, input.tangentSpaceTranspose);
  29.     HALF3 uvwCubemap = mul( R, input.tangentSpaceTranspose);
  30.     
  31.     HALF Diffuse = texCUBE( sDiffuseCubemap, uvwDiffuseCubemap );
  32.     HALF3 Cubemap = texCUBE( sCubemap, uvwCubemap);
  33.     HALF  Fresnel = fresnel( Normalmap, input.E, 2)*FRESNELSCALE;
  34.     
  35.     HALF4 Color = tex2D( sColor, input.uvColor );
  36.  
  37.     HALF CubemapMask = saturate(Color.a*2-1);
  38.     HALF SpecularMask = saturate(Color.a*2);
  39.     CubemapMask = saturate(CubemapMask+Fresnel*CubemapMask*16);
  40.  
  41.     return HALF4(Color.rgb*Diffuse+Cubemap*CubemapMask,0); 
  42.  
  43. }
  44.  
  45. ")
  46.