SSAO
还原屏幕空间的每个点的世界坐标,通过法线,随机采样某个上半球范围里的一些3D点,把这些点投影到像素平面,取对应地方的深度,通过这些深度与当前着色点深度的差异来计算AO值
视差映射
天空盒渲染
简单的做法是最先渲染,但是不效率,这代表着,被遮住的也要渲染,即使几乎完全被遮住。最效率的做法是最后渲染天空盒。做法如下:
Vertex Shader中使用代码ndc_pos = pos.xyww;
这时候,z总是会被写为1.在渲染的时候,把深度测试改为小于或者等于(因为深度图总被clear成1.【stencil是0】)
描边
使用Object缩放进行描边
渲染所有对象,Stencil无条件全部写1,关闭深度test,关闭stencil写,在Stencil不为1的地方(之前没有被画过的地方),把要描边的对象放大一点点,用纯色shader渲染一遍。
阴影图
Bias,要往深度视线方向移一点,避免某些平面上因为shadow map分辨率有限产生的交替现象。考虑投影在一平面上的shadow map,视点转换到深度灯光相机时,是同一个深度。
Bias方法消除闪烁会因为bias过大产生物体飞起来的现象,此时可以使用另外一种方法来解决,就是在渲染shadow map的时候使用front cull,此时渲染时候与shadow map的时候处在同一表面的点就不再处于同一点了,渲染的点都在shadow map点的内部,也就是不再阴影中。同时也可以用来解决bias太大的问题,但两个技术最好分开使用。需要注意的是,front cull的方法不能有薄的几何体!
来源:CSDN
作者:kliok
链接:https://blog.csdn.net/wubuguiqazwsx/article/details/104616877