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

📄 blinn_reflect.nvv

📁 游戏编程精华02-含有几十个游戏编程例子
💻 NVV
字号:
/*********************************************************************NVMH2****
Path:  C:\Dev\devrel\Nv_sdk_4\Dx8\NVEffectsBrowser\Effects\BlinnBumpDynamicMap
File:  blinn_reflect.nvv

Copyright (C) 1999, 2000 NVIDIA Corporation
This file is provided without support, instruction, or implied warranty of any
kind.  NVIDIA makes no guarantee of its fitness for a particular purpose and is
not liable under any circumstances for any damages or loss whatsoever arising
from the use or inability to use this file or items derived from it.

Comments:

; This shader does the per-vertex dot3 setup work.
; It transforms the light vector by the basis vectors
; passed into the shader.
; The basis vectors only need to change if the model's
; shape changes.
; The output vector is stored in the diffuse channel
; (use the menu to look at the generated light vector)

******************************************************************************/


#include "Constants.h"

 
#define V_POSITION    v0
#define V_NORMAL      v1
#define V_DIFFUSE     v2
#define V_TEXTURE     v3
#define V_ST          v4        ;  as an alternative SxT may be computed on the fly
#define V_S           v5
#define V_T           v6

#define WORLD_VERTEX	r0
#define SxT             r1
#define S               r2
#define T               r3
#define EYE_VECTOR      r4
#define TEMP            r5

vs.1.0

; Transform position to clip space and output it
dp4 oPos.x, V_POSITION, c[CV_WORLDVIEWPROJ_0]
dp4 oPos.y, V_POSITION, c[CV_WORLDVIEWPROJ_1]
dp4 oPos.z, V_POSITION, c[CV_WORLDVIEWPROJ_2]
dp4 oPos.w, V_POSITION, c[CV_WORLDVIEWPROJ_3]

; Normalize S and T
dp3 S.w, V_S, V_S
rsq S.w, S.w
mul S, V_S, S.w

dp3 T.w, V_T, V_T
rsq T.w, T.w
mul T, V_T, T.w


; here we compute SxT (if V_SxT is available, then this is unnecessary, of course)
mul SxT, S.zxyw, T.yzxw           ; 2 instruction cross product
mad SxT, S.yzxw, T.zxyw, -SxT

dp3 SxT.w, SxT, SxT                 ; and 3 instruction normalization
rsq SxT.w, SxT.w
mul SxT.xyz, SxT, SxT.w


; If SxT calc not desired, select the input V_SxT instead
; Set CV_CALC_SxT to x,y = (1,0) to use calculated value
; Set to x,y = (0,1) to use input value

//mul  TEMP, v4,  c[CV_CALC_SXT].y
//mad  SxT,  SxT, c[CV_CALC_SXT].x, TEMP



; Scale the bumps
mul S, S, c[CV_BUMPSCALE].w
mul T, T, c[CV_BUMPSCALE].w

; Rotate the basis vectors by the world transform to put them into world space
dp3 oT1.x, S,  c[CV_BASISTRANSFORM_0]
dp3 oT1.y, T,  c[CV_BASISTRANSFORM_0]
dp3 oT1.z, SxT, c[CV_BASISTRANSFORM_0]

dp3 oT2.x, S,  c[CV_BASISTRANSFORM_1]
dp3 oT2.y, T,  c[CV_BASISTRANSFORM_1]
dp3 oT2.z, SxT, c[CV_BASISTRANSFORM_1]

dp3 oT3.x, S,  c[CV_BASISTRANSFORM_2]
dp3 oT3.y, T,  c[CV_BASISTRANSFORM_2]
dp3 oT3.z, SxT, c[CV_BASISTRANSFORM_2]

; Calculate the eye vector in world space
dp3 WORLD_VERTEX.x, V_POSITION, c[CV_WORLD_0]
dp3 WORLD_VERTEX.y, V_POSITION, c[CV_WORLD_1]
dp3 WORLD_VERTEX.zw, V_POSITION, c[CV_WORLD_2]
add EYE_VECTOR, -WORLD_VERTEX, c[CV_EYE_WORLD]

; store the eye vector in the texture coordinate w for
; the pixel shader
mov oT1.w, EYE_VECTOR.x
mov oT2.w, EYE_VECTOR.y
mov oT3.w, EYE_VECTOR.z

mov oD0, c[CV_ONE]

mov oT0.xy, V_TEXTURE




⌨️ 快捷键说明

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