Search Results for '알파블랜딩'

2 POSTS

  1. 2007/05/29 알파 블랜딩 + 알파 테스트로 나무그리기
  2. 2007/05/20 알파 서브셋 메시 렌더링 정책

1. 알파블랜딩

m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
m_pDevice->SetRenderState( D3DRS_SRCBLENDD3DBLEND_SRCALPHA );
m_pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );


사용자 삽입 이미지

오른쪽처럼 뒤쪽에 있는 매쉬부터 그려오면 문제가 없지만, 왼쪽그림처럼 앞쪽이 먼저그려진다면,
치명적인 결과를 불러 일으킨다!! ㅜ_ㅜ.




2. 알파테스트

m_pDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
m_pDevice->SetRenderState( D3DRS_ALPHAREF,        0x08 );
m_pDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );


사용자 삽입 이미지

알파블랜딩처럼 치명적인 위험은 전혀 없지만, 나무 가장자리가 도트수준으로 잘려 두드러져 보인다.
알파채널값은 0x08 로 설정되었고, 이값보다 크거나 같으면 텍셀을 출력하게 된다.


3. 알파블랜딩 + 알파테스트

m_pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
m_pDevice->SetRenderState( D3DRS_SRCBLENDD3DBLEND_SRCALPHA );
m_pDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
m_pDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
m_pDevice->SetRenderState( D3DRS_ALPHAREF,        0x08 );
m_pDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );

사용자 삽입 이미지


사용자 삽입 이미지

정렬을 신경쓰지 않고 적절히 출력할수 있는 방법이나, 알파테스트로 잘려나가지 않은 부분에선(알파블랜딩)
위그림처럼 보는시점에 따라서 가장자리가 지저분해질 수 있다.



간단한 알파 데모

Leave a comment


Self Alpha Blending
*. 모델중 알파텍스처 포함 모델의 경우
: 캐랙터 모델에서조차 섬세한 모양의 부분은 매쉬형태가 아닌 단순한 평면에 알파 텍스쳐를 입히는
경우가 있다. (머리카락등의 경우)

a. 정상적인 렌더링의 경우
평면이 그대로 랜더링 되기때문에, 평면그대로가 묘사된다.

b. 알파블랜딩을 설정한 경우
모델내에서도 z값에 의해 뒷면이 잘려나가 안면등이 제대로 렌더링 되지 않을 수 있다.

c. 서브셋 정렬 + 알파블랜딩
알파텍스쳐 포함 서브셋과 그외 서브셋을 분리하여, 알파텍스쳐가 없는 서브셋을 먼저그린 후,
알파텍스쳐 포함 서브셋을 나중에 렌더링한다.
앞머리와 뒷머리가 모두 알파텍스쳐인 경우, 이 알파면이 겹치는 부분이 제대로 렌더링 되지 않는다.

d. 서브셋 정렬 + 알파 서브셋 카메라 정렬(거리) + 알파블랜딩
가장 완벽한 방법이나, 한 모델을 렌더링하는데 그 비용이 너무 많이 소요된다.


e. 서브셋 정렬 + 알파블랜딩 + ZWrite OFF + CULLMODE NONE
알파없는 서브셋을 먼저 그린후, Zwrite를 Off한다음 알파 서브셋을 렌더링한다.
알파면이 겹칠수 있으나, 적절한 결과물을 출력할 수 있다.

f. 알파블랜딩 + 알파테스트
알파테스트의 경우 가장자리가 두드러지게 잘려나가지만, 이 가장자리를 알파브랜딩
이 보완하는 방법이다. 알파면이 적을경우 이 방법도 좋을것 같다.

Leave a comment


Recent Posts

  1. [참고자료] 모니터 해상도 도표
  2. [런타임에러] Expression: map/set it..
  3. *. 플러그인 랩퍼 사용하기 ( 3DS MAX..
  4. *. 스키닝 오프셋 벡터 [Offset Vecto..
  5. November 2007 DirectX SDK News

Recent Comments

  1. 관리자만 볼 수 있는 댓글입니다. 06/24

Recent Trackbacks

Calendar

«   2009/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

  1. Cafe24
  2. ForTheProgramming
  3. Tatter Tools
  4. 근석이
  5. 진호네

Site Stats

TOTAL 14477 HIT
TODAY 4 HIT
YESTERDAY 16 HIT
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.