unityshader为什么高斯模糊需要两个pass
答案:2 悬赏:40 手机版
解决时间 2021-03-02 23:16
- 提问者网友:留有余香
- 2021-03-02 11:40
unityshader为什么高斯模糊需要两个pass
最佳答案
- 五星知识达人网友:独钓一江月
- 2021-03-02 12:23
在shader里实现是因为只有片源着色器才能进行像素级别的操作,固定渲染管线是不行的。如果你不想用shader,又想实现像素级别的操作,可以把场景绘制的内容输出为一张纹理或者图片,然后在图片上处理高斯模糊
全部回答
- 1楼网友:鱼忧
- 2021-03-02 13:21
unity shader中的pass的执行顺序是依据pass在shader中出现的先后顺序来确定的。
然后通过配制每个pass的lightmode tag,来选择具体执行哪个pass。
以surface shader举例说明:
surface shader展开来后,可以看到如下pass。
pass{ tags{"lightmode"="vertex"} }
pass{ tags{"lightmode"="forwardbass"} }
pass{ tags{"lightmode"="deferred"} }
这三个pass是相互排斥的,永远只可能执行其中一个pass。
那unity是根据什么来选择执行哪个pass的呢?
unity通过摄像机下的rendering path来选择相应的pass。
rendering path=legacy vertex lit时,选择"lightmode"="vertex"的pass。forwardbass与deferred将不会被执行。
rendering path= forwardbass时,优先选择"lightmode"="forwardbass"的pass,forwardbass不存在时,选择vertex。deferred将不会被执行。
rendering path= deferred时,优先选择"lightmode"="deferred"的pass,deferred不存在时,选择forwardbass,forwardbass不存在时选择vertex。
以上就是passt选择的规律。
还有一些别的pass,如"lightmode"="
shadowcaster"依赖的就不是摄像机的rendering path,而是mesh render里的cast shadows了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯