永发信息网

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了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯