常用特效【面试用】

核能气质少年 提交于 2020-03-05 07:35:07

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的方法不能有薄的几何体!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!