【Unity Shaders】模版测试之彩色 + 灰度处理,不影响物体前后顺序 免费下载

近期有小伙伴提了一个需求,选中物体是彩色显示,非选中物体灰色显示,物体排序正常,所以实现了一个简单的需求,先上图

 推一个公众号啊,欢迎大家关注,我会定期更新内容,小伙伴们也可以提个工作中的需求,近量帮助大家!!!

微信号:ITComputerGraph

如需工程:关注公众号《IT木子李》回复:unity彩色灰色混合显示

 这里应用了相机的图像处理和模版测试,需要两个相机,一个相机渲染场景,一个相机渲染要选中的物体

场景相机需要做灰度处理,提取图片亮度信息有固定公式,我们采样图像,然后提取亮度再输出就可以了

同时支持亮度对比度调节

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
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章