?? specular.vp
字號:
!!ARBvp1.0
# specular.vp
#
# Generic vertex transformation,
# diffuse and specular lighting
# based on one white light
ATTRIB iPos = vertex.position; # input position
ATTRIB iPrC = vertex.color.primary; # input primary color
ATTRIB iNrm = vertex.normal; # input normal
OUTPUT oPos = result.position; # output position
OUTPUT oPrC = result.color.primary; # output primary color
PARAM mvp[4] = { state.matrix.mvp }; # model-view * proj matrix
PARAM mv[4] = { state.matrix.modelview }; # model-view matrix
# inverse transpose of model-view matrix:
PARAM mvIT[4] = { state.matrix.modelview.invtrans };
PARAM lightPos = program.local[0]; # light pos in eye space
TEMP N, V, L, H, NdotL, NdotH; # temporary registers
TEMP diffuse, specular;
DP4 oPos.x, iPos, mvp[0]; # xform input pos by MVP
DP4 oPos.y, iPos, mvp[1];
DP4 oPos.z, iPos, mvp[2];
DP4 oPos.w, iPos, mvp[3];
DP4 V.x, iPos, mv[0]; # xform input pos by MV
DP4 V.y, iPos, mv[1];
DP4 V.z, iPos, mv[2];
DP4 V.w, iPos, mv[3];
SUB L, lightPos, V; # vertex to light vector
DP3 N.x, iNrm, mvIT[0]; # xform norm to eye space
DP3 N.y, iNrm, mvIT[1];
DP3 N.z, iNrm, mvIT[2];
DP3 N.w, N, N; # normalize normal
RSQ N.w, N.w;
MUL N, N, N.w;
DP3 L.w, L, L; # normalize light vector
RSQ L.w, L.w;
MUL L, L, L.w;
ADD H.xyz, L, {0, 0, 1};
DP3 H.w, H, H; # normalize half-angle
RSQ H.w, H.w;
MUL H, H, H.w;
DP3 NdotL, N, L; # N . L
MAX NdotL, NdotL, 0.0;
MUL diffuse, iPrC, NdotL;
DP3 NdotH, N, H; # N . H
MAX NdotH, NdotH, 0.0;
POW specular, NdotH.x, 128.0.x; # 128 is specular exponent
ADD oPrC, diffuse, specular; # sum the colors
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -