아 쉐이더 자체를 안 짜본지 오래 되서 오랫만에 회사에서 시간도 난겸 한번 짜보았다....
오렌 네이어 자체는 이해를 하고 있는데
예전엔 HLSL 로 쉐이더 공부를 하였고, 유니티에서는 급 수정 작업에 들어갈때 쉐이더 들을 만졌는데...
완전히 처음부터 쉐이더 하나 만드려고 하니까 가이드를 하나 하나 읽어 봐야 하였다.
GeSHi © 2004-2007 Nigel McNie, 2007-2010 Benny Baumann, 2008-2009 Milian Wolff
- float4 OrenLayar(v2f i)
- {
- float3 n = normalize(i.normal);
- float3 l = normalize(i.lightDir);
- float3 v = normalize(i.viewDir);
- float VdotN = dot(v, n);
- float LdotN = dot(l, n);
- float gamma = dot(v - n * VdotN, l - n * LdotN);
- float rough_sq = _Roughness * _Roughness ;
- float A = 1.0f - 0.5f * (rough_sq / (rough_sq + 0.57f));
- float B = 0.45f * (rough_sq / (rough_sq + 0.09));
- float2 tc = float2((VdotN + 1.0f) / 2.0f, (LdotN) /2.0f);
- float C = tex2D(_LookUpTex, tc).r;
- float3 final = (A + B * max(0.0f, gamma) * C);
- return float4(max(0.0f, dot(n, l)) * final, 1.0f);
- }
결과는 잘 나오더라. 음 현재는 룩업 텍스쳐를 읽어 오는 방식인데.... 구글링 해보니 최적화 방법들도 있고...!


덧글
NGUI라는 게 굉장히 중요하다고 하더군요.
근데 그게 뭔지조차도 잘 모르겠어서, 혹시 좀 알려주실 수 있으신지요?
유니티 기존의 GUI 시스템이 성능 적인 면이 너무 좋지 않고 불편 하기 때문에
상용 게임 제작에는 아마 거의 모두 GUI 플러그인을 구매 하고 있고 현재 가장 인기 있는것이
NGUI 입니다.