Supermodel/win32/pixel_shader.ps
Ville Linde a1c9f6cf92
2006-07-12 13:53:14 +00:00

57 lines
1.3 KiB
PostScript

ps_3_0
; input declarations
dcl_color0 v0.xyzw
dcl_texcoord0 v1.xyzw
dcl_texcoord1 v2.xyzw
dcl_texcoord2 v3.xyzw
dcl_color1 v4.xyzw
dcl_2d s0
; constants
def c0, 1.0f, 0.0f, 0.0f, 0.5f
def c1, 0.00048828125f, 0.000244140625f, 0.0f, 0.0f
rcp r30, v2.z ; calculate 1/width
rcp r31, v2.w ; calculate 1/height
mov r31.xy, c0.yy ; r31.xy <- 0,0 \ hopefully co-issue...
mov r31.z, r30.z ; /
add r1.xyzw, v1.xyxy, r31.yyzy ; texel[0][0], texel[1][0]
add r2.xyzw, v1.xyxy, r31.ywzw ; texel[0][1], texel[1][1]
frc r1.xyzw, r1.xyzw
frc r2.xyzw, r2.xyzw
mul r3, r1, v2.zwzw ; mul by width, height
mul r4, r2, v2.zwzw ; mul by width, height
add r10, r3, v2.xyxy ; add tex base
add r11, r4, v2.xyxy ; add tex base
mul r10, r10, c1.xyxy ; div by 2048
mul r11, r11, c1.xyxy ; div by 2048
frc r18, r3
texld r5, r10.xy, s0
texld r6, r10.zw, s0
texld r7, r11.xy, s0
texld r8, r11.zw, s0
lrp r12, r18.xxxx, r6, r5
lrp r13, r18.xxxx, r8, r7
lrp r15, r18.yyyy, r13, r12
;if_lt v0.a, c0.x ; if polygon alpha is enabled use that instead of texture alpha
; mov r15.a, v0.a
;endif
if_ne v4.x, c0.y ; if v4.x == 0 -> color, if v4.x != -> texture
mul_sat r15, v0, r15 ; modulate with color
else
mov r15, v0
endif
;mov r15, v0
mov oC0, r15