프로그래밍 2014. 4. 15. 21:07
728x90

 

 

반투명 셰이더 - 01

 

 

셰이더에서는
diffuse 의 알파값을 이용하거나,
PS의 최종 컬러값의 알파값을 이용하면,
매우 쉽게,
투명 상태를 만들수 있습니다,

 

( 디퍼드(deferred) 렌더링에서는 반투명한 오브젝트를 사용하기가 힘들다고 알고 있습니다만,

저는 디퍼드가 아니라서,,, ^^;;; ㅎㅎ )

 

 

그런데,
만약 캐릭터의 경우라면?

 

물론
.......

 

투명 상태를 만들수 있겠지요,

 

 

단,
이런 경우가 생길 수 있습니다,

 

 

 

 

좀 더 확대해보면....

 

 

 

( 알파값 0.5 )

 

 

 

 

( 알파값 0.8 )

 

CW - Cull Mode 를 지정하고 렌더링한 것입니다.

 

 

알파값을 조절해도

겹쳐지는 정도의 차이는 있지만,
면들이 겹쳐 얼룩덜룩 해지게 됩니다.

 

why ??

.......

 

폴리곤에서

같은 위치의 면이 하나가 아닐 경우 입니다.

 

같은 위치의 면 여러개가 draw 된다면,

겹쳐지게 됩니다.

 

이런 경우에는 알파값을 어떻게 주더라도,
면들이 겹쳐져 출력이 되더군요,,,

 

캐릭터 제작시에,

캐릭터의 폴리곤이 겹쳐져 draw 되는 면이 아예 없다면,

좋겠지만,

캐릭터가 조금만 복잡한 모양이 되더라도 겹쳐지는 면들은 생기지 않을까,,,, 합니다.

 

겹쳐진 면들이 있는 상태에서,

VS 와 PS 를 통해서

알파값을 주고,

캐릭터의 모든 폴리곤을

렌더링시키면 ,

 

이렇게 되는 것은 당연한 일이었습니다,,,,, ;;;

 

 

 

( 다리 부분을 보시면, 외투와 발이 반투명 상태에서, 서로 겹쳐져 draw 되는 것을 볼 수 있습니다. )

 


이런 문제가 있을 거라고는 생각 안하고 있었다가,,,
둥,,,

 

해결을 위해
이곳저곳 검색도 해보고,

 

요리조리 생각을 해보니,,,,

 

깔끔하게 반투명을 만들수 있는 것은
결국

 

1. 캐릭터의, 최종적인 렌더링 결과물( 그려지는 과정이 아닌 )이 있어야 하고,
2. 이 결과물에 알파값을 주면 된다


라는 결론이었습니다.

 

최종적인 결과물 이라는 것은
텍스쳐 상태이겠죠,
이 텍스쳐를 반투명하게 그려주면 될 것입니다.


텍스쳐 결과물을 만들기 위해서는

렌더타겟이 필요해 집니다.


렌더타겟은 참!

여기저기 사용할 만한 데가 많군요,,,

 

 

 

728x90

'프로그래밍' 카테고리의 다른 글

반투명 셰이더 - 03  (1) 2014.04.15
반투명 쉐이더 - 02  (0) 2014.04.15
HDR LDR Bloom  (0) 2014.03.23
쉐이더 홈피 하나 추천!  (0) 2014.03.19
C++ UIProperty_String - 02  (0) 2014.03.09
posted by BK dddDang
: