Team Fortress 2 Source Code as on 22/4/2020
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.

42 lines
1.2 KiB

  1. ps.1.1
  2. ;------------------------------------------------------------------------------
  3. ; Environment mapping on a bumped surface
  4. ; t0 - Normalmap
  5. ; t3 - Cube environment map (*must* be a cube map!)
  6. ;
  7. ; c0 - color to multiply the results by
  8. ; Input texture coords required here are a little wonky.
  9. ; tc0.uv <- U,V into the normal map
  10. ; tc1.uvw, tc2.uvw, tc3.uvw <- 3x3 matrix transform
  11. ; from tangent space->env map space
  12. ; tc1.q, tc2.q, tc3.q <- eye vector in env map space
  13. ;------------------------------------------------------------------------------
  14. ; This version doesn't multiply by lighting.
  15. ; Get the 3-vector from the normal map
  16. tex t0
  17. ; Perform matrix multiply to get a local normal bump. Then
  18. ; reflect the eye vector through the normal and sample from
  19. ; a cubic environment map.
  20. texm3x3pad t1, t0_bx2
  21. texm3x3pad t2, t0_bx2
  22. texm3x3vspec t3, t0_bx2
  23. ; result goes in output color
  24. mul r0.rgb, t3, c0 ; constant color
  25. +mov r0.a, c0.a
  26. mul r1.rgb, r0, r0
  27. lrp r0.rgb, c1, r1, r0 ; blend between color and color * color
  28. dp3 r1.rgb, r0, c3
  29. lrp r0.rgb, c2, r0, r1 ; blend between color and greyscale
  30. ; Multiply the output color by the alpha channel of the normal map.
  31. mul r0.rgb, t0.a, r0