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

📄 specular.fp

📁 OpeNGL超级宝典源代码. OpeNGL超级宝典源代码.
💻 FP
字号:
!!ARBfp1.0

# specular.fp
#
# per-pixel specular lighting

ATTRIB iPrC = fragment.color.primary;# input primary color
ATTRIB iTC0 = fragment.texcoord[0];  # normal (N)
ATTRIB iTC1 = fragment.texcoord[1];  # light vector (L)

OUTPUT oPrC = result.color;          # output color

TEMP N, L, H, NdotL, NdotH;
ALIAS diffuse = NdotL;
ALIAS specular = NdotH;

DP3 N.w, iTC0, iTC0;                 # normalize normal
RSQ N.w, N.w;
MUL N, iTC0, N.w;

DP3 L.w, iTC1, iTC1;                 # normalize light vec
RSQ L.w, L.w;
MUL L, iTC1, L.w;

ADD H, L, {0, 0, 1};                 # half-angle vector
DP3 H.w, H, H;                       # normalize it
RSQ H.w, H.w;
MUL H, H, H.w;

DP3 NdotL, N, L;                     # N . L
MAX NdotL, NdotL, 0.0;               # max(N . L, 0)
MUL diffuse, iPrC, NdotL;            # diffuse color

DP3 NdotH, N, H;                     # N . H
MAX NdotH, NdotH, 0.0;               # max(N . H, 0)
POW specular, NdotH.x, 128.0.x;      # NdotH^128

ADD oPrC.rgb, diffuse, specular;     # diffuse + specular
MOV oPrC.a, iPrC.a;                  # preserve alpha

END

⌨️ 快捷键说明

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