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

📄 directionallightbump.nvv

📁 游戏编程精华02-含有几十个游戏编程例子
💻 NVV
字号:
; Directional Light, Diffuse and Specular.
; Viewer is non-local (constant half-vector)
#include "DirectionalLight.h"

#define R_NORMAL r1
#define S_WORLD r2
#define T_WORLD r3
#define SxT_WORLD r4
#define R_DIFFUSE r5
#define R_SPECULAR r6
#define LIGHT_LOCAL r7
#define R_HALF_VECTOR r8


vs.1.0

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

; Transform basis vectors to world space
dp3 S_WORLD.x, CV_S, c[CV_WORLD_0]
dp3 S_WORLD.y, CV_T, c[CV_WORLD_0]
dp3 S_WORLD.z, CV_NORMAL, c[CV_WORLD_0]

dp3 T_WORLD.x, CV_S, c[CV_WORLD_1]
dp3 T_WORLD.y, CV_T, c[CV_WORLD_1]
dp3 T_WORLD.z, CV_NORMAL, c[CV_WORLD_1]

dp3 SxT_WORLD.x, CV_S, c[CV_WORLD_2]
dp3 SxT_WORLD.y, CV_T, c[CV_WORLD_2]
dp3 SxT_WORLD.z, CV_NORMAL, c[CV_WORLD_2]

; transform light by basis vectors to put it
; into texture space
dp3 LIGHT_LOCAL.x, S_WORLD.xyz, c[CV_LIGHT1_DIRECTION]
dp3 LIGHT_LOCAL.y, T_WORLD.xyz, c[CV_LIGHT1_DIRECTION]
dp3 LIGHT_LOCAL.z, SxT_WORLD.xyz, c[CV_LIGHT1_DIRECTION]

; Normalize the light vector
dp3 LIGHT_LOCAL.w, LIGHT_LOCAL, LIGHT_LOCAL
rsq LIGHT_LOCAL.w, LIGHT_LOCAL.w
mul LIGHT_LOCAL, LIGHT_LOCAL, LIGHT_LOCAL.w

; Scale to 0-1
add LIGHT_LOCAL, LIGHT_LOCAL, c[CV_ONE]
mul oD0, LIGHT_LOCAL, c[CV_HALF]

; Set alpha to 1
mov oD0.w, c[CV_ONE].w

; output tex coords
mov oT0, CV_TEXTURE0
mov oT1, CV_TEXTURE0

⌨️ 快捷键说明

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