OffsetMapping_specular.asm
资源名称:3dwind2.0.rar [点击查看]
上传用户:xhbjoy
上传日期:2014-10-07
资源大小:38068k
文件大小:1k
源码类别:
游戏引擎
开发平台:
Visual C++
- // Pixel Shader for doing bump mapping with parallax plus diffuse and specular lighting by nfz
- // uv TEXCOORD0
- // lightDir TEXCOORD1
- // eyeDir TEXCOORD2
- // half TEXCOORD3
- // lightDiffuse c0
- // lightSpecular c1
- // Parallax scale and bias c2
- // normal/height map texunit 0 - height map in alpha channel
- // diffuse texture texunit 1
- ps.1.4
- texld r0, t0 // get height
- texcrd r2.xyz, t0 // get uv coordinates
- texcrd r3.xyz, t2 // get eyedir vector
- mad r0.xyz, r0.a, c2.x, c2.y // displacement = height * scale + bias
- mad r2.xyz, r3, r0, r2 // newtexcoord = eyedir * displacement + uv
- phase
- texld r0, r2.xyz // get normal N using newtexcoord
- texld r1, r2.xyz // get diffuse texture using newtexcoord
- texcrd r4.xyz, t1 // get lightdir vector
- texcrd r5.xyz, t3 // get half angle vector
- dp3_sat r5.rgb, r0_bx2, r5 // N dot H - spec calc
- dp3_sat r4.rgb, r0_bx2, r4 // N dot L - diffuse calc
- + mul r5.a, r5.r, r5.r
- mul r0.rgb, r4, r1 // colour = diffusetex * N dot L
- + mul r5.a, r5.a, r5.a
- mul r5.rgb, r5.a, r5.a
- mul r5.rgb, r5, r5
- mul r5.rgb, r5, r5
- mul r5.rgb, r5, c1 // specular = (N dot H)^32 * specularlight
- mad r0.rgb, r0, c0, r5 // colour = diffusetex * (N dot L)* diffuselight + specular
- + mov r0.a, c2.b