2020-09-30 17:17:25 +02:00

58 lines
815 B
GLSL

xvs.1.1
#define CV_FINAL_MAT 0
#define CV_LIGHT_POS 4
#define CV_EYE_POS 5
; Transform point from object space to screen space
m4x4 oPos, v0, c[CV_FINAL_MAT]
;Normalize light vector
mov r1,c[CV_LIGHT_POS]
sub r0.xyz, r1.xyz, v0.xyz
dp3 r2.x, r0.xyz, r0.xyz
rsq r1.x, r2.x
mul r2.xyz, r1.x, r0.xyz
;Normalize eye vector
sub r3.xyz, c[CV_EYE_POS].xyz, v0.xyz
dp3 r4.x, r3.xyz, r3.xyz
rsq r1.x, r4.x
mul r3.xyz, r1.x, r3.xyz
;Normalize half-way vector = light vector + eye vector
add r4.xyz,r3.xyz,r2.xyz
dp3 r3.x, r4.xyz, r4.xyz
rsq r1.x, r3.x
mul r4.xyz, r1.x, r4.xyz
;Transform light vector into tangent space
m3x3 oT0,r2,v2
;Transform halfway vector into tangent space
m3x3 oT1, r4,v2