1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
/************************************************************
in:
t0 texcoords
t1 lightvector
t2 halfvector
t3 viewvector
stage 0 diffuse texture
stage 1 normal map
c0 const (0.0f, 0.5f, 1.0f, 2.0f)
c1 (specular power, height scale, offset, 0.0f)
c2 light color
*************************************************************/
ps_2_0
dcl v0
dcl t0
dcl t1
dcl t2
dcl t3
dcl_2d s0
dcl_2d s1
// parallax mapping
texld r0, t0, s1
nrm r1, t3 // renormalize viewvector
mul r1, r1, c1.y
mad r0, r0, c0.w, -c0.z // decompress height
mad r4, r1, r0.a, t0
// normal mapping
texld r1, r4, s1 // r1 <- normal map
nrm r3, t2 // renormalize halfvector
nrm r2, t1 // renormalize lightvector
texld r0, r4, s0 // r0 <- diffuse texture
mad r1, r1, c0.w, -c0.z // decompress normals
// r4 <- lambert
dp3 r4, r1, r2 // N * L
// r5 <- blinn specular
dp3 r5, r1, r3 // N * H
pow r5, r5.w, c1.x
mul r5, r5, r0.a
mad r0, r0, r4, r5 // texture * diffuse + specular
mul r0, r0, c2 // (texture * diffuse + specular) * light color
mul r0, r0, v0
mov oC0, r0
|