原文地址:https://blog.csdn.net/t163361/article/details/88551582
最近项目中遇到一个问题,不同的Camera显示同一个物体上,希望能呈现不同的渲染效果
通过查找Camera和Shader的内置变量发现一个有意思的内置变量
// x = 1 or -1 (-1 if projection is flipped)
// y = near plane
// z = far plane
// w = 1/far plane
uniform vec4 _ProjectionParams;
整个变量可以获得摄像机的远近裁剪面距离等信息
然后就可以通过控制摄像机的远裁剪面,设置一个特殊的值,在unity里面区分具体是哪个Camera了
例如Camera1的Clipping Planes中的Far设置10000
Camera2的Clipping Planes中的Far设置5000
shader里面通过
float farValue = _ProjectionParams.z/10000;
当farValue接近1的时候表示Camera1
当farValue接近0.5的时候表示Camera2