⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lightmappedgeneric_bumpmappedenvmap.psh

📁 hl2 source code. Do not use it illegal.
💻 PSH
字号:
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
; c1 - envmap contrast
; c2 - envmap saturation
; c3 - grey weights
; c4 - fresnel amount
; 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
;------------------------------------------------------------------------------

; 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

; FIXME FIXME - Need to do specialized versions of this with and without:
; - constant color
; - fresnel amount of exactly 0 or 1 or in between
; - envmap contrast of 0, 1, or in between
; - envmap saturation of 0, 1, or in between

; r0 = constant color * result of bump into envmap
mul r0.rgb, t3, c0

; dot eye-vector with per-pixel normal from t0
dp3_sat	r1, v0_bx2, t0_bx2

; run Fresnel approx. on it: R0 + (1-R0) (1-cos(q))^5 in alpha channel
mul r1.rgb, r0, r0					; color squared
+mul r0.a, 1-r1.a, 1-r1.a			; squared

lrp	r0.rgb, c1, r1, r0				; blend between color and color * color
+mul r0.a, r0.a, r0.a				; quartic

dp3	r1.rgb, r0, c3					; color greyscaled
+mul r0.a, r0.a, 1-r1.a				; quintic

; FIXME - these should be able to pair (I think), but don't on nvidia for some reason.
lrp	r0.rgb, c2, r0, r1				; blend between color and greyscale
mad r0.a, r0.a, c6.a, c4.a			; Take Fresnel R(0) into consideration

mul r0.rgb, r0, r0.a				; multiply output color by result of fresnel calc
+mov r0.a, t0.a						; output alpha from the texture



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -