本文最后更新于187 天前,其中的信息可能已经过时,如有错误请发送邮件到2939296129@qq.com
作业分享




作业-答案-批改-答疑
OldSchool
连连看和代码
half4 frag(v2f i):SV_TARGET
{
Light mylight=GetMainLight();
half3 lightDir=normalize(mylight.direction);
half3 viewDir=normalize(i.viewDir);
half3 normalDir=normalize(i.normal);
half3 reflectDir = reflect(-lightDir,normalDir);
half RdotV = saturate(dot(reflectDir,viewDir));
half3 spec=_SpecularColor*pow(RdotV,_SpecularRange);
return half4(spec,1);
}
作业复刻
作业一——FakeEnvReflect
伪环境反射效果:

- 用Phong做一个类似于HalfLmabert的操作(Remap到01)
- 用上面的值去采样一张Noise图
- 再加上正常的Phong高光

作业二——葡萄
葡萄的效果:

- NdotL采样RampTex(二维,水平控制RampColor,垂直控制成熟情况的Color)
- Blend混合Noise形成纹理
- 加上Phong高光
- 用Noise的一个通道存储信息(增强对比度),来Lerp控制高光大小和形状
- 定义Power1和Power2,用Noise G通道值插值,乘上高光颜色,最后Add

作业三——生锈
有点丑,不知道为什么Lerp出来效果和课上展示的不一样

- Phong高光,Noise插值双power,乘上高光颜色、高光强度
- Noise插值两个Color,乘上lambert得到diffuse
- noise乘上range参数控制范围

情报-BRDF

BRDF就是一个公式(或者函数),我们输入光、摄像机、表面性质等信息,就会输出反射光的信息。
我们之前学的Phong、Blinn-Phong、Lambert都是BRDF函数。

还有很多BRDF函数

开源的各种BRDF函数,可以查看源码。
