渲染应用笔记 Vol. 1

git存档


1. 基础光照


关于Normal Map

Unity里使用Normal Map的纹理类型,会使用DXT/BC为法线贴图进行压缩,通道信息变更,需要用UnpackNormal()函数进行解码,范围从[0,1]映射到[-1,1]。

谈谈法线图的压缩 - 腾讯游戏学院

tangent(根据u/v)和binormal的组合坐标系概念,直观的可以这样写:

half3 normal_data = UnpackNormal(normalmap);
normal_dir = normalize(tangent_dir * normal_data.x * _NormalIntensity + binormal_dir * normal_data.y * _NormalIntensity + normal_dir * normal_data.z);

也可以这样:

float3x3 TBN = float3x3(tangent_dir, binormal_dir, normal_dir);
normal_dir = normalize(mul(normal_data.xyz, TBN));


HDR&HDR以及Tone Mapping

HDR = High Dynamic Range

动态范围 = 最高亮度 / 最低亮度


Unity中的HDR设置(在Camera处开启)


最常用的Tone Mapping曲线是ACES(Academic Color Encording System),能提高对比度,保留暗处和亮处的细节。

avatar