大家好,欢迎来到IT知识分享网。
体积光在现实世界中也叫丁达尔光
体积光在网上也有很多个版本,但是大多数是 以 光照贴图作为 参考最想进行比较。 这样的尽管可以很轻松方便的实现出 体积光,但是他的硬伤确实 精细度太低了,完全无法复原出 体积光该有的 朦胧的感觉。(如下)https://blog.csdn.net/weixin_32938207/article/details/113035729
实现效果如下
黄昏
清晨
光线模拟
丁达尔光线物理原理
丁达尔光是什么
丁达尔效应的发现
自定义太阳
我们获取深度图的第一个方式 就是通过摄像机获取他的深度贴图,这是我们要注意性能的效果,但是获取深度贴图是一个比较耗时的操作,我们不能直接通过depthTextureMode获取深度图,毕竟代价很大,所以我们需要自己申请两个rendertexture,用来存储从GPU传过来的深度贴图和颜色贴图
void Start() {
colorRT = new RenderTexture(Screen.width, Screen.height, 24, RenderTextureFormat.Default); depthRT = new RenderTexture(Screen.width, Screen.height, 0, RenderTextureFormat.Depth); } private void OnPreRender() {
cam.SetTargetBuffers(colorRT.colorBuffer, depthRT.depthBuffer); }
自定义太阳视椎体平面提取
若通过解析方法计算射线与探照灯的投影锥体表面交点,需要首先得到该锥形体的平面方程。Gribb 等人提出了通过投影矩阵快速得到投影平锥体6个平面方程的方法[5],这里简单介绍一下其思路。
那么 p 在裁剪空间下的坐标为
p 在 NDC 空间下的坐标可以通过下式计算
不妨以左裁剪平面为例,其平面方程在 NDC 空间下为 x_{NDC} = -1 ,即
即是一个平面的标准方程 Ax + By + Cz + D = 0 的向量形式 (A, B, D, D) dot (x, y, z, 1) = 0 ,而平面的法向量即是 n=(A, B, C) ,也可以直接从该式得到,但该式并没有考虑法向量的正负方向。
采样频率
但是很不幸的消息是,做过对应的早点随机采样之后,梯度的效果会消失,但是随之而来的确实黑白不同的颗粒感,如上图所以。
总结
性能方面的消耗还是有的 ,毕竟需要向真实世界的渲染效果方向努力,所以作为给硬件擦屁股的优化指标,也要把我折磨的快疯掉了(不断的在性能优化 和 渲染效果取最优解)。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135484.html