home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 April / Gamestar_83_2006-04_dvd.iso / Dema / demowot_english.exe / InfDX / Shaders / ratmospherecloud-deferred-transparent-pixel.hlsl < prev    next >
Text File  |  2005-05-02  |  2KB  |  62 lines

  1. //***************************************************************************
  2. // Author:  Laszlo Rimoczi (Rimo)
  3. // Purpose: RCloud.mat
  4. //
  5. // Copyright (C) 2005 by Digital Reality Inc.
  6. // All rights reserved.
  7. //
  8. // This source may not be distributed and/or modified without
  9. // expressly written permission by Digital Reality Inc.
  10. //***************************************************************************
  11.  
  12. //float4 TDX_CONST_RFOGCOLOR;
  13.  
  14. float4 TDX_CONST_CLOUDFACTOR;
  15. float4 TDX_CONST_CLOUDLIGHT;
  16. float TDX_CONST_CLOUDDENSITY;
  17.  
  18. struct VS_OUTPUT
  19. {
  20.     float4 cDiffuse: COLOR0;
  21.     float2 cUV: TEXCOORD0;
  22.     float4 cUV12: TEXCOORD1;
  23.     float4 cUV34: TEXCOORD2;
  24. };
  25.  
  26. sampler pNoise: register(s0);
  27. sampler pTable: register(s1);
  28.  
  29. float4 main(VS_OUTPUT i_sIn): COLOR
  30. {
  31.     float3 cIndex;
  32.     cIndex.rgb = tex2D(pNoise, i_sIn.cUV12.xy).rgb * TDX_CONST_CLOUDFACTOR.xxx;
  33.     cIndex.rgb += tex2D(pNoise, i_sIn.cUV12.zw).rgb * TDX_CONST_CLOUDFACTOR.yyy;
  34.     cIndex.rgb += tex2D(pNoise, i_sIn.cUV34.xy).rgb * TDX_CONST_CLOUDFACTOR.zzz;
  35.     cIndex.rgb += tex2D(pNoise, i_sIn.cUV34.zw).rgb * TDX_CONST_CLOUDFACTOR.www;
  36.  
  37.     cIndex *= 0.25f;
  38.  
  39.     float2 cUV;
  40.     cUV.x = cIndex.r*cIndex.r;
  41.  
  42.     float3 cNrm;
  43.     cNrm.x = cIndex.b - 0.5f;
  44.     cNrm.y = cIndex.g - 0.5f;
  45.     cNrm.z = 1.0f - sqrt(cNrm.x*cNrm.x + cNrm.y*cNrm.y);
  46.  
  47.     cNrm.x *= TDX_CONST_CLOUDLIGHT.w;
  48.     cNrm.y *= TDX_CONST_CLOUDLIGHT.w;
  49.     cNrm = (1.0f-cUV.x) * normalize(cNrm);
  50.  
  51.     cUV.y = 0.25f + 0.25f * dot(cNrm, TDX_CONST_CLOUDLIGHT.xyz);
  52.  
  53.     float4 cColor = lerp(tex2D(pTable, cUV), tex2D(pTable, float2(cUV.x, cUV.y+0.5f)), TDX_CONST_CLOUDDENSITY);
  54.  
  55.     cColor.a *= tex2D(pNoise, i_sIn.cUV).a;
  56.     cColor *= i_sIn.cDiffuse;
  57.  
  58. //    cColor.rgb = lerp(cColor.rgb, TDX_CONST_RFOGCOLOR.rgb, TDX_CONST_RFOGCOLOR.a);
  59.  
  60.     return cColor;
  61. }
  62.