Slightly simplify ST calculation

This commit is contained in:
UnknownShadow200 2025-04-30 20:54:35 +10:00
parent 3dc7b93eff
commit 34474b32aa
2 changed files with 20 additions and 24 deletions

View File

@ -43,4 +43,5 @@
#define PRIM_VTX_TRCODE 40 // trivial-reject clipping flags (against -w/+w) #define PRIM_VTX_TRCODE 40 // trivial-reject clipping flags (against -w/+w)
#define PRIM_VTX_SIZE 42 #define PRIM_VTX_SIZE 42
#endif #endif

View File

@ -137,7 +137,7 @@ GPUCmd_UploadVertex:
addi vtx, %lo(VERTEX_CACHE) addi vtx, %lo(VERTEX_CACHE)
sdv vpos, PRIM_VTX_X ,vtx sdv vpos, PRIM_VTX_X ,vtx
sdv vcol, PRIM_VTX_R ,vtx sdv vcol, PRIM_VTX_R ,vtx
sdv vtex, PRIM_VTX_TEX_S ,vtx slv vtex, PRIM_VTX_TEX_S ,vtx
# == matrix multiply == # == matrix multiply ==
li mtx_ptr, %lo(GL_MATRIX_MVP) li mtx_ptr, %lo(GL_MATRIX_MVP)
@ -343,41 +343,36 @@ GL_TnL:
#define vtexsize $v06 #define vtexsize $v06
#define vtexoffset $v07 #define vtexoffset $v07
#define vstrq $v08 #define vst $v08
ldv vstrq, PRIM_VTX_TEX_S,vtx # S + T + R + Q llv vst, PRIM_VTX_TEX_S,vtx # S + T
suv vrgba, SCREEN_VTX_RGBA,vtx suv vrgba, SCREEN_VTX_RGBA,vtx
li s1, %lo(GL_STATE_TEX_SIZE) li s1, %lo(GL_STATE_TEX_SIZE)
llv vtexsize.s, 0,s1 llv vtexsize.s, 0,s1
llv vtexoffset.s, 4,s1 llv vtexoffset.s, 4,s1
#define vinvq_i $v26 #define vst_i $v28
#define vinvq_f $v27 #define vst_f $v29
#define vstrq_i $v28
#define vstrq_f $v29
#define q e3
# Scale texcoord by texsize and subtract offset (to correct for bilinear sampling if active) # Scale texcoord by texsize and subtract offset (to correct for bilinear sampling if active)
#vmudn v___, vstrq, vtexsize #vmudn v___, vst, vtexsize
# vmadh vstrq, vtexoffset, K1 # vmadh vst, vtexoffset, K1
#vmudn v___, vstrq, vtexsize #vmudn v___, vst, vtexsize
#vmadh vstrq, vtexoffset, K1 #vmadh vst, vtexoffset, K1
#vmudl vstrq, vstrq, vtexsize #vmudl vst, vst, vtexsize
vmudh v___, vstrq, vtexsize vmudh v___, vst, vtexsize
vsar vstrq_i, COP2_ACC_HI vsar vst_i, COP2_ACC_HI
vsar vstrq_f, COP2_ACC_MD vsar vst_f, COP2_ACC_MD
vmudl vstrq_f, vstrq_f, K8192 vmudl vst_f, vst_f, K8192
vmadm vstrq_i, vstrq_i, K8192 vmadm vst_i, vst_i, K8192
vmadn vstrq, vzero, vzero vmadn vst, vzero, vzero
#undef vinvq_i #undef vst_i
#undef vinvq_f #undef vst_f
#undef vstrq_i
#undef vstrq_f
#undef q #undef q
lbu t0, PRIM_VTX_TRCODE(vtx) lbu t0, PRIM_VTX_TRCODE(vtx)
@ -393,7 +388,7 @@ GL_TnL:
sb t0, PRIM_VTX_TRCODE(vtx) sb t0, PRIM_VTX_TRCODE(vtx)
jal GL_CalcScreenSpace jal GL_CalcScreenSpace
slv vstrq.s, SCREEN_VTX_S,vtx slv vst.s, SCREEN_VTX_S,vtx
j GL_CalcClipCodes j GL_CalcClipCodes
move ra, ra2 move ra, ra2