home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 May / Gamestar_73_2005-05_dvd.iso / Programy / ATITool_0.0.23.exe / ATITool.exe / 1031 / RCDATA / 152 < prev    next >
Text File  |  2005-01-10  |  7KB  |  255 lines

  1. #ifndef MAX_NUM_LIGHTS
  2. #define MAX_NUM_LIGHTS 4
  3. #endif
  4.  
  5. float Time : TIME;
  6.  
  7. float4x4 g_mWorldView;
  8. float4x4 g_mProj;
  9.  
  10. texture  g_txRoom;
  11. float4   g_vLightIntensity = { 66.0f, 66.0f, 66.0f, 1.0f };
  12. float4   g_vLightPosView[MAX_NUM_LIGHTS];  // Light positions in view space
  13.  
  14. sampler2D g_samRoom =
  15. sampler_state
  16. {
  17.     Texture = <g_txRoom>;
  18.     MinFilter = Point;
  19.     MagFilter = Linear;
  20.     MipFilter = Linear;
  21. };
  22.  
  23.  
  24. //---------------------------------------------------------------------------------
  25. //Static constants
  26. //---------------------------------------------------------------------------------
  27.  
  28. float4 Color_ID7         = {1.01, 0.21, 0.13, 1}; //no comments
  29. float4 Vector_ID8        = {0.01, 0.01, 0.01, 1}; //no comments
  30. const float4 Vertex_Normal_ID9 = {0, 0, 0, 1};          //no comments
  31. float  Frequency_ID9     = 3.5;                   //no comments
  32. float  NoiseScale_ID9    = 0.9;                   //no comments
  33. float  RingSharpness_ID9 = 15.4;                    //no comments
  34. float4 DarkColor_ID9     = {0.44, 0.21, 0, 1};    //no comments
  35. float4 LiteColor_ID9     = {0.92, 0.5, 0.13, 1};  //no comments
  36. float  Scale_ID12        = 0.3;                   //no comments
  37.  
  38.  
  39. //---------------------------------------------------------------------------------
  40. //Textures
  41. //---------------------------------------------------------------------------------
  42.  
  43. texture Texture_ID13 : register(t0);
  44.  
  45. //---------------------------------------------------------------------------------
  46. //Sampler states
  47. //---------------------------------------------------------------------------------
  48.  
  49. sampler SAMPLER_Sampler_FID14 : register(s0) = sampler_state
  50. {
  51.     texture = <Texture_ID13>;
  52. };
  53.  
  54. //---------------------------------------------------------------------------------
  55. //Sampler functions
  56. //---------------------------------------------------------------------------------
  57.  
  58. float4 Sampler_FID14(float4 TexCoords)
  59. {
  60.     return tex3D(SAMPLER_Sampler_FID14, TexCoords);
  61. }
  62.  
  63. //---------------------------------------------------------------------------------
  64. //Functions
  65. //---------------------------------------------------------------------------------
  66.  
  67. //Function (Block FID9)
  68.  
  69. float4 Wood_FID9(float4 Noise, float4 Vertex_Position, float4 Vertex_Normal, float Frequency, float NoiseScale, float RingSharpness, float4 DarkColor, float4 LiteColor, float4 Grain_Direction)
  70. {
  71.     // Signed noise
  72.     float snoise = 2 * Noise - 1;
  73.     
  74.     //Direction = float4(1, 0.5, 0, 0);
  75.     
  76.     float3 Dir = normalize(Grain_Direction.xyz);
  77.  
  78.     float r = frac(Frequency * (Vertex_Position.x*Dir.x+Vertex_Position.y*Dir.y + Vertex_Position.z*Dir.z)/2 + NoiseScale * snoise);
  79.     
  80.     float invMax = pow(RingSharpness , RingSharpness / (RingSharpness - 1)) / (RingSharpness - 1);
  81.     float ring = invMax * (r - pow(r, RingSharpness ));
  82.     
  83.     float3 Base = lerp(DarkColor.xyz, LiteColor.xyz, ring + snoise);
  84.     
  85.     return abs(float4(Base, 1.0));
  86.     
  87. }
  88.  
  89. //Function (Block FID10)
  90.  
  91. float4 Reflection_FID10(float4 Vertex_Position, float4 Vertex_Normal)
  92. {
  93.     float3 E = normalize(Vertex_Position.xyz);
  94.     
  95.     float3 Normal = normalize(Vertex_Normal.xyz);
  96.     
  97.     float3 R = normalize(E - 2 * dot(E, Normal ) * Normal );
  98.     
  99.     return float4(R, 1.0);
  100. }
  101.  
  102. //Function (Block FID11)
  103.  
  104. float4 SpecularIntensityGloss_FID11(float4 Wood, float4 Gloss, float4 Diffuse)
  105. {
  106.     float Ks = pow((Wood.r+Wood.g+Wood.b)/3, 2) * 4;//-0.2;
  107.     
  108.     float4 Color = float4(Wood.xyz + pow(Gloss.xyz, 2)/3, 1.0);
  109.     
  110.     Color = Color*Diffuse;//*2*Ks;
  111.     
  112.     return abs(Color);
  113.     
  114. }
  115.  
  116. //Function (Block FID12)
  117.  
  118. float4 Vector_Scale_FID12(float4 Vector, float Scale)
  119. {
  120.     return Scale * Vector;
  121. }
  122.  
  123. //-----------------------------------------------------------------------------
  124. // Vertex Shader: HDRVertRoom
  125. // Desc: Process vertex for HDR-enabled Room
  126. //-----------------------------------------------------------------------------
  127. void HDRVertRoom( float4 iPos : POSITION,
  128.                    float3 iNormal : NORMAL,
  129.                    float2 iTex : TEXCOORD0,
  130.                    out float4 oPos : POSITION,
  131.                    out float2 Tex : TEXCOORD0,
  132.                    out float3 Pos : TEXCOORD1,                   
  133.                    out float3 Normal : TEXCOORD2,
  134.                    out float4 tc3 : TEXCOORD3 )
  135. {
  136.     //
  137.     // Transform position to view space
  138.     //
  139.     oPos = mul( iPos, g_mWorldView );
  140.  
  141.     //
  142.     // Also write view position to texcoord1 to do per-pixel lighting
  143.     //
  144.     Pos = oPos;
  145.  
  146.     //
  147.     // Transform to screen coord
  148.     //
  149.     oPos = mul( oPos, g_mProj );
  150.  
  151.     //
  152.     // Transform normal and write to texcoord2 for per-pixel lighting
  153.     //
  154.     Normal = normalize( mul( iNormal, (float3x3)g_mWorldView ) );
  155.     
  156.     //
  157.     // Propagate texture coord
  158.     //
  159.     Tex = iTex;
  160.     tc3=iPos;
  161.     
  162. }
  163.  
  164. texture Texture_ID15 : register(t1);
  165.  
  166. sampler SAMPLER_Sampler_FID16 : register(s1) = sampler_state
  167. {
  168.     texture = <Texture_ID15>;
  169. };
  170.  
  171. float4 Sampler_FID16(float4 TexCoords)
  172. {
  173.     return tex2D(SAMPLER_Sampler_FID16, TexCoords);
  174. }
  175.  
  176. //---------------------------------------------------------------------------------
  177. //Shader entry
  178. //---------------------------------------------------------------------------------
  179. float4 HDRPixRoom(  float2 TC0_Vertex_Position : TEXCOORD0,
  180.                     float4 TC1_Vertex_Position : TEXCOORD3):COLOR
  181. {
  182.  
  183.     float4 Out = (float4)0;
  184.  
  185.     //Block level
  186.  
  187.     float4 Vector_ID12 = TC1_Vertex_Position;
  188.  
  189.     float4 Result_ID12 = Vector_Scale_FID12(Vector_ID12, Scale_ID12);
  190.  
  191.     //Block level
  192.  
  193.     float4 TexCoords_ID14 = Result_ID12;
  194.     float4 Vertex_Position_ID10 = Result_ID12;
  195.  
  196.     float4 Pixel_ID14 = Sampler_FID14(Result_ID12);
  197.  
  198.     Pixel_ID14 = tex2D( g_samRoom, TC1_Vertex_Position );
  199.  
  200.     //Block level
  201.  
  202.     float4 Noise_ID9 = Pixel_ID14;
  203.     float4 Vertex_Position_ID9 = TC1_Vertex_Position;
  204.     float4 Grain_Direction_ID9 = Pixel_ID14;
  205.  
  206.     float4 Output_ID9 = Wood_FID9(Noise_ID9, Vertex_Position_ID9, Vertex_Normal_ID9, Frequency_ID9, NoiseScale_ID9, RingSharpness_ID9, DarkColor_ID9, LiteColor_ID9, Grain_Direction_ID9);
  207.     float4 UVW_ID10 = Reflection_FID10(Vertex_Position_ID10, Vector_ID8);
  208.  
  209.     //Block level
  210.  
  211.     float4 Wood = Output_ID9;
  212.     float4 Gloss = Color_ID7;
  213.     float4 Diffuse = UVW_ID10;
  214.  
  215.     float4 Output_ID11 = SpecularIntensityGloss_FID11(Wood, Gloss, Diffuse);
  216.  
  217.     Out = Output_ID11;
  218.  
  219.     float2 tc = TC1_Vertex_Position * 0.01;
  220.     Out=Out+tex2D( g_samRoom, tc );
  221.     
  222.     return Out;
  223. }
  224.  
  225. //-----------------------------------------------------------------------------
  226. // Technique: RenderRoom
  227. // Desc: Renders Room objects
  228. //-----------------------------------------------------------------------------
  229.  
  230. // sampler
  231. sampler WrappedLinear = 
  232. sampler_state
  233. {
  234.     Texture   = NULL;
  235.     AddressU  = WRAP;
  236.     AddressV  = WRAP;
  237.     MipFilter = LINEAR;
  238.     MinFilter = LINEAR;
  239.     MagFilter = LINEAR;
  240. };
  241.  
  242. technique RenderRoom
  243. {
  244.     pass p0
  245.     {
  246.         // render states
  247.         CullMode = CCW;
  248.         
  249.         Sampler[0]  = (WrappedLinear);
  250.  
  251.         VertexShader = compile vs_1_1 HDRVertRoom();
  252.         PixelShader = compile ps_2_0 HDRPixRoom();
  253.     }
  254. }
  255.