【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
}

 

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