mirror of
https://github.com/thug1src/thug.git
synced 2025-01-22 05:43:47 +00:00
54 lines
2.2 KiB
V Shell
54 lines
2.2 KiB
V Shell
|
xvs.1.1
|
||
|
|
||
|
#include "anim_vertdefs.h"
|
||
|
|
||
|
#pragma screenspace
|
||
|
|
||
|
;------------------------------------------------------------------------------
|
||
|
; Bone space transforms
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
; Get matrix index 1
|
||
|
mov a0.x, VSIN_REG_INDICES.x
|
||
|
|
||
|
; Transform position
|
||
|
dp4 VSTMP_REG_POS_TMP.x, VSIN_REG_POS, c[0 + a0.x VSCONST_REG_MATRIX_OFFSET]
|
||
|
dp4 VSTMP_REG_POS_TMP.y, VSIN_REG_POS, c[1 + a0.x VSCONST_REG_MATRIX_OFFSET]
|
||
|
dp4 VSTMP_REG_POS_TMP.z, VSIN_REG_POS, c[2 + a0.x VSCONST_REG_MATRIX_OFFSET]
|
||
|
mov VSTMP_REG_POS_TMP.w, VSIN_REG_POS.w
|
||
|
|
||
|
; No need to scale by results by vertex weights, since this is a one-weight shader so the weight
|
||
|
; is assumed to be 1.0
|
||
|
|
||
|
;------------------------------------------------------------------------------
|
||
|
; Combined camera & projection matrix
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
dp4 oPos.x, VSTMP_REG_POS_TMP, VSCONST_REG_TRANSFORM_X
|
||
|
dp4 oPos.y, VSTMP_REG_POS_TMP, VSCONST_REG_TRANSFORM_Y
|
||
|
dp4 oPos.z, VSTMP_REG_POS_TMP, VSCONST_REG_TRANSFORM_Z
|
||
|
dp4 oPos.w, VSTMP_REG_POS_TMP, VSCONST_REG_TRANSFORM_W
|
||
|
|
||
|
;------------------------------------------------------------------------------
|
||
|
; Calculate second set of texture coordinates (into 4th slot) by transforming the world space
|
||
|
; position into the shadowbuffer space
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
dp4 oT3.x, VSTMP_REG_POS_TMP, VSCONST_REG_SHADOWBUFFER_TRANSFORM_X
|
||
|
dp4 oT3.y, VSTMP_REG_POS_TMP, VSCONST_REG_SHADOWBUFFER_TRANSFORM_Y
|
||
|
dp4 oT3.z, VSTMP_REG_POS_TMP, VSCONST_REG_SHADOWBUFFER_TRANSFORM_Z
|
||
|
dp4 r0.w, VSTMP_REG_POS_TMP, VSCONST_REG_SHADOWBUFFER_TRANSFORM_W
|
||
|
|
||
|
;clamp w (q) to 0
|
||
|
slt r1, c0, c0
|
||
|
max r0.w, r0.w, r1.w
|
||
|
mov oT3.w, r0.w
|
||
|
|
||
|
;------------------------------------------------------------------------------
|
||
|
; oPos to screenspace transformation
|
||
|
;------------------------------------------------------------------------------
|
||
|
|
||
|
mul oPos.xyz, r12, c94 ; scale
|
||
|
+ rcc r1.x, r12.w ; compute 1/w
|
||
|
mad oPos.xyz, r12, r1.x, c95 ; scale by 1/w, add offset
|