近期有小伙伴提了一个需求,选中物体是彩色显示,非选中物体灰色显示,物体排序正常,所以实现了一个简单的需求,先上图
推一个公众号啊,欢迎大家关注,我会定期更新内容,小伙伴们也可以提个工作中的需求,近量帮助大家!!!
微信号:ITComputerGraph
关注公众号《IT木子李》
这里应用了相机的图像处理和模版测试,需要两个相机,一个相机渲染场景,一个相机渲染要选中的物体
场景相机需要做灰度处理,提取图片亮度信息有固定公式,我们采样图像,然后提取亮度再输出就可以了
同时支持亮度对比度调节
float _Brightness;
float _Contrast;
fixed4 frag(v2f i) : SV_Target
{
float4 renderTex = tex2D(_MainTex, i.uv);
fixed luminance = 0.2125 * renderTex.r + 0.7154 * renderTex.g + 0.0721 * renderTex.b;
luminance *= _Brightness;
float avgColor = 0.5;
float finalColor = lerp(0.5, luminance, _Contrast);
return fixed4(finalColor, finalColor, finalColor, 1);
}
接下来是两个物体的shader部分,我们的方块是要彩色显示的,球要灰色处理,但球还在方块的前面,所以球不需要输出颜色信息,这样我们给一个用当前颜色,模版值设为2
Stencil{
Ref 2
Comp Always
Pass Replace
}
再看方块shader,球以外没有被挡住的部分要正常渲染,挡住的扔掉,所以模版值也设为2,只要不等于2的,我们就认没有挡住
Stencil{
Ref 2
Comp NotEqual
}