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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
vs.1.1
# DYNAMIC: "DOWATERFOG" "0..1"
# DYNAMIC: "SKINNING" "0..1"
#include "macros.vsh"
;------------------------------------------------------------------------------
; Vertex blending
;------------------------------------------------------------------------------
$cView0 = $SHADER_SPECIFIC_CONST_0;
$cView1 = $SHADER_SPECIFIC_CONST_1;
$cView2 = $SHADER_SPECIFIC_CONST_2;
&AllocateRegister( \$worldPos );
&AllocateRegister( \$worldNormal );
&SkinPositionAndNormal( $worldPos, $worldNormal );
;------------------------------------------------------------------------------
; Transform the position from world to view space
;------------------------------------------------------------------------------
&AllocateRegister( \$projPos );
dp4 $projPos.x, $worldPos, $cViewProj0
dp4 $projPos.y, $worldPos, $cViewProj1
dp4 $projPos.z, $worldPos, $cViewProj2
dp4 $projPos.w, $worldPos, $cViewProj3
mov oPos, $projPos
;------------------------------------------------------------------------------
; Fog
;------------------------------------------------------------------------------
&CalcFog( $worldPos, $projPos );
&FreeRegister( \$projPos );
&AllocateRegister( \$viewNormal );
; Transform the normal from object to view space
dp3 $viewNormal.x, $worldNormal, $cView0
dp3 $viewNormal.y, $worldNormal, $cView1
dp3 $viewNormal.z, $worldNormal, $cView2
&FreeRegister( \$worldNormal );
; normalize normal (do we need to do this?)
&Normalize( $viewNormal );
&AllocateRegister( \$viewPos );
; Transform position from object to view space
dp4 $viewPos.x, $worldPos, $cView0
dp4 $viewPos.y, $worldPos, $cView1
dp4 $viewPos.z, $worldPos, $cView2
&FreeRegister( \$worldPos );
&AllocateRegister( \$vertToEye );
; vector from point to eye in view space
mov $vertToEye.xyz, -$viewPos
&FreeRegister( \$viewPos );
; normalize
&Normalize( $vertToEye );
dp3 $viewNormal.x, $vertToEye, $viewNormal
add $viewNormal.x, $viewNormal.x, $SHADER_SPECIFIC_CONST_5 ; FIXME
&FreeRegister( \$vertToEye );
;------------------------------------------------------------------------------
; Texture coordinates
;------------------------------------------------------------------------------
mov oT0, $viewNormal
mov oT1, $vTexCoord0
&FreeRegister( \$viewNormal );
|