Example_FresnelPS.asm
上传用户:xhbjoy
上传日期:2014-10-07
资源大小:38068k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. ps.1.4
  2.   // conversion from Cg generated ARB_fragment_program to ps.1.4 by NFZ
  3.   // command line args: -profile arbfp1 -entry main_fp
  4.   // program main_fp
  5.   // c0 : distortionRange
  6.   // c1 : tintColour
  7.   // testure 0 : noiseMap
  8.   // texture 1 : reflectMap
  9.   // texture 2 : refractMap
  10.   // v0.x : fresnel 
  11.   // t0.xyz : noiseCoord
  12.   // t1.xyw : projectionCoord 
  13. def c2, 2, 1, 0, 0
  14.   // Cg: distort.x = tex3D(noiseMap, noiseCoord).x;
  15.   // arbfp1: TEX R0.x, fragment.texcoord[0], texture[0], 3D;
  16.   // sample noise map using noiseCoord in TEX unit 0 
  17. texld r0, t0.xyz
  18.   // get projected texture coordinates from TEX coord 1
  19.   // will be used in phase 2
  20. texcrd r1.xy, t1_dw.xyw
  21. mov r1.z, c2.y
  22.   // Cg: distort.y = tex3D(noiseMap, noiseCoord + yoffset).x;
  23.   // arbfp1: ADD R1.xyz, fragment.texcoord[0], c1;
  24.   // arbfp1: TEX R1.x, R1, texture[0], 3D;
  25.   // arbfp1: MOV R0.y, R1.x;
  26.   // Cg: distort = (distort * 2 - 1) * distortionRange;
  27.   // arbfp1: MAD R0.xy, R0, c0.x, -c0.y;
  28.   // arbfp1: MUL R0.xy, R0, u0.x;
  29.   // (distort * 2 - 1) same as 2*(distort -.5) so use _bx2
  30.   // Cg: final = projectionCoord.xy / projectionCoord.w;
  31.   // Cg: final += distort;
  32.   // arbfp1: RCP R0.w, fragment.texcoord[1].w;
  33.   // arbfp1: MAD R0.xy, fragment.texcoord[1], R0.w, R0;
  34.   //  final = (distort *  projectionCoord.w) + projectionCoord.xy
  35.   // for ps.1.4 have to re-arrange things a bit to perturb projected texture coordinates
  36. mad r0.xyz, r0_bx2, c0.x, r1
  37. phase
  38.   // do dependant texture reads
  39.   // Cg: reflectionColour = tex2D(reflectMap, final);
  40.   // arbfp1: TEX R0, R0, texture[1], 2D;
  41.   // sampe reflectMap using dependant read : texunit 1 
  42. texld r1, r0.xyz
  43.   // Cg: refractionColour = tex2D(refractMap, final) + tintColour;
  44.   // arbfp1: TEX R1, R0, texture[2], 2D;
  45.   // sample refractMap : texunit 2 
  46. texld r2, r0.xyz
  47.   // adding tintColour that is in global c1
  48.   // arbfp1: ADD R1, R1, u1;
  49. add r2, r2, c1
  50.   // Cg: col = lerp(refractionColour, reflectionColour, fresnel);
  51.   // arbfp1: ADD R0, R0, -R1;
  52.   // arbfp1: MAD result.color, fragment.color.primary.x, R0, R1;
  53. lrp r0, v0.x, r1, r2