본문 바로가기
Shader

저렴한 오버레이 공식

by 대마왕J 2016. 2. 20.

오버레이는 원래 if문이 필요한 공식입니다.

https://mouaif.wordpress.com/2009/01/05/photoshop-math-with-glsl-shaders/

 

에 따르면

 

BlendOverlayf(base, blend)     (base < 0.5 ? (2.0 * base * blend) : (1.0 - 2.0 * (1.0 - base) * (1.0 - blend)))

 

으로 0.5 이상이냐 이하이냐에 따라 if문으로 공식이 바뀌는 놈.

 

그런데 모바일에서 if 문은 좀 그렇죠

 

그래서 간단하게 만든 모바일용 오버레이 간략버전.

 

fixed4 c = tex2D (_MainTex, IN.uv_MainTex) ;
fixed4 d = tex2D (_MainTex2, IN.uv_MainTex2);
           fixed dgray = saturate((d.r+d.g+d.b)/3); // 
           o.Emission = lerpsaturate(1-((1-c)*(1-d)*2)),saturate(c*d*2),dgray);

 

c는 타켓 텍스쳐 d는 오버레이 텍스쳐

오버레이 텍스쳐의 그레이스케일을 구한다

두 연산을 그레이스케일의 lerp로 처리해서 구함.

 

 

반응형

댓글