📄 manypoint.nvv
字号:
; Implements 17 simple diffuse point light sources
; 4 Instructions for the transform
; 7 Instructions for each light
; 2 Instructions for initial color setup
; 1 Instruction for final color setup
; = 126 Instructions
#include "lighting.h"
#define R_LIGHT_COEF r8
#define R_VERTEX_TO_LIGHT r9
#define R_FINAL_COLOR r11
#define XYZW_LIGHT_N_DOT_L x
#define XYZW_V_TO_L_DIST w
vs.1.0
; Transform position to clip space
dp4 oPos.x, v0, c[CV_WORLDVIEWPROJ_0]
dp4 oPos.y, v0, c[CV_WORLDVIEWPROJ_1]
dp4 oPos.z, v0, c[CV_WORLDVIEWPROJ_2]
dp4 oPos.w, v0, c[CV_WORLDVIEWPROJ_3]
; Set the output color to 0
mov R_FINAL_COLOR, c[CV_ZERO]
mov R_FINAL_COLOR.w, c[CV_ONE].w
; A macro to lay down a light calculation, based on the input Position and Diffuse values
#define ADD_LIGHT(Position, Diffuse) \
add R_VERTEX_TO_LIGHT, c[Position],-v0 \
dp3 R_VERTEX_TO_LIGHT.XYZW_V_TO_L_DIST, R_VERTEX_TO_LIGHT, R_VERTEX_TO_LIGHT \
rsq R_VERTEX_TO_LIGHT.XYZW_V_TO_L_DIST, R_VERTEX_TO_LIGHT.XYZW_V_TO_L_DIST \
dp3 R_LIGHT_COEF.XYZW_LIGHT_N_DOT_L, v1, R_VERTEX_TO_LIGHT \
max R_LIGHT_COEF.XYZW_LIGHT_N_DOT_L, R_LIGHT_COEF.XYZW_LIGHT_N_DOT_L, c[CV_ZERO].x \
mul R_LIGHT_COEF.XYZW_LIGHT_N_DOT_L, R_LIGHT_COEF.XYZW_LIGHT_N_DOT_L, R_VERTEX_TO_LIGHT.XYZW_V_TO_L_DIST \
mad R_FINAL_COLOR, R_LIGHT_COEF.XYZW_LIGHT_N_DOT_L, c[Diffuse], R_FINAL_COLOR
ADD_LIGHT(CV_LIGHT1_POSITION, CV_LIGHT1_DIFFUSE)
ADD_LIGHT(CV_LIGHT2_POSITION, CV_LIGHT2_DIFFUSE)
ADD_LIGHT(CV_LIGHT3_POSITION, CV_LIGHT3_DIFFUSE)
ADD_LIGHT(CV_LIGHT4_POSITION, CV_LIGHT4_DIFFUSE)
ADD_LIGHT(CV_LIGHT5_POSITION, CV_LIGHT5_DIFFUSE)
ADD_LIGHT(CV_LIGHT6_POSITION, CV_LIGHT6_DIFFUSE)
ADD_LIGHT(CV_LIGHT7_POSITION, CV_LIGHT7_DIFFUSE)
ADD_LIGHT(CV_LIGHT8_POSITION, CV_LIGHT8_DIFFUSE)
ADD_LIGHT(CV_LIGHT9_POSITION, CV_LIGHT9_DIFFUSE)
ADD_LIGHT(CV_LIGHT10_POSITION, CV_LIGHT10_DIFFUSE)
ADD_LIGHT(CV_LIGHT11_POSITION, CV_LIGHT11_DIFFUSE)
ADD_LIGHT(CV_LIGHT12_POSITION, CV_LIGHT12_DIFFUSE)
ADD_LIGHT(CV_LIGHT13_POSITION, CV_LIGHT13_DIFFUSE)
ADD_LIGHT(CV_LIGHT14_POSITION, CV_LIGHT14_DIFFUSE)
ADD_LIGHT(CV_LIGHT15_POSITION, CV_LIGHT15_DIFFUSE)
ADD_LIGHT(CV_LIGHT16_POSITION, CV_LIGHT16_DIFFUSE)
ADD_LIGHT(CV_LIGHT17_POSITION, CV_LIGHT17_DIFFUSE)
mov oD0, R_FINAL_COLOR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -