You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.1 KiB
36 lines
1.1 KiB
ps.1.1 |
|
|
|
;------------------------------------------------------------------------------ |
|
; Environment mapping on a bumped surface |
|
; t0 - Normalmap |
|
; t3 - Cube environment map (*must* be a cube map!) |
|
; |
|
; c0 - color to multiply the results by |
|
; Input texture coords required here are a little wonky. |
|
; tc0.uv <- U,V into the normal map |
|
; tc1.uvw, tc2.uvw, tc3.uvw <- 3x3 matrix transform |
|
; from tangent space->env map space |
|
; tc1.q, tc2.q, tc3.q <- eye vector in env map space |
|
;------------------------------------------------------------------------------ |
|
; This version doesn't multiply by lighting. |
|
|
|
; Get the 3-vector from the normal map |
|
tex t0 |
|
|
|
; Perform matrix multiply to get a local normal bump. Then |
|
; reflect the eye vector through the normal and sample from |
|
; a cubic environment map. |
|
texm3x3pad t1, t0_bx2 |
|
texm3x3pad t2, t0_bx2 |
|
texm3x3vspec t3, t0_bx2 |
|
|
|
; result goes in output color |
|
mul r0.rgb, t3, c0 ; constant color |
|
+mov r0.a, c0.a |
|
|
|
mul r1.rgb, r0, r0 |
|
lrp r0.rgb, c1, r1, r0 ; blend between color and color * color |
|
dp3 r1.rgb, r0, c3 |
|
lrp r0.rgb, c2, r0, r1 ; blend between color and greyscale |
|
|
|
|
|
|