2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다.
Moderator: 류광
-
briscape
- Posts: 54
- Joined: 2004-12-23 18:54
- Location: http://bl.na.mu
-
Contact:
Post
by briscape »
안녕하세요.
위의 그림을 보시면 아시겠지만.. 빨간 화살표 부분은 Screen효과가 제대로 적용되는 반면에
텍스쳐의 까만색이 다른 텍스쳐를 가려버리는 현상이 발생합니다..
gpg에서 나온대로
Code: Select all
pD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_INVDESTCOLOR);
pD3DDev->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
pD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
옵션을 주었는데요..
ALPHABLENDENABLE 도 켜고꺼보고 ALPHATESTENABLE도 켜고꺼보고 다 했는데..
저렇게 나옵니다. 대체 왜그럴까요..
저 사각형들은 다 빌보드입니다. 순서는 무작위구요. ZBUFFER은 켜져있는 상태입니다.
- To be a better man...
-
비회원
Post
by 비회원 »
저 현상은 빌보드의 Z축이 앞을 가리기 때문입니다. Z를 끄면 겹치는 현상이 발생해버리고요. 대안은 소프트 파티클입니다.
-
briscape
- Posts: 54
- Joined: 2004-12-23 18:54
- Location: http://bl.na.mu
-
Contact:
Post
by briscape »
고정파이프라인으로는 저거 해결 못하는건가요?
제가 알기론 소프트 파티클은 파티클 빌보드가 다른 불투명 메시와 겹칠때
그 경계선을 부드럽게 해주기 위해서 쓰는거라고 알고있는데요
저건 그냥 단순히 폭발 파티클을 표현하기 위한 것인데도..
소프트 파티클을 써야 하는건가요?
- To be a better man...
-
nikola2
- Posts: 886
- Joined: 2005-07-12 01:19
- Location: (주) 신규 소프트
Post
by nikola2 »
생각하신대로 소프트파티클하고 직접 관련은 없는 겁니다...
(관련있으려면 겹치는 2개의 오브젝트 중 어느 한쪽이 빌보드가 아니어야되죠...)
파티클/빌보드만 따로 떼어 보면 큰 어려움은 없고...아주 기초적인 해결방법만 씁니다...
파티클만 모아서...맨나중에 그리고...z버퍼의 쓰기기능만 꺼도 어느정도 해소되고..
깊이값에 맞춰서 먼거부터 가까운 순으로 소팅해서 그리면 더 직관적으로 해소됩니다..
집사람이 국력이다...
-
비회원
Post
by 비회원 »
pD3DDev->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
pD3DDev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
pD3DDev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTCOLOR);
로 해보심이 어떨지..
-
어린양.
- Posts: 8
- Joined: 2007-09-02 16:27
Post
by 어린양. »
저도 나무를 빌보드로 처리했을때
Z값이 적은 나무 뒤쪽으로 투명해야하는 면이
뒤의 나무들을 가리는 현상이 있었습니다.. (블랜딩의 기본 공식에 따르면 당연한걸지도--;;)
이문제 때문에 다시 정렬을 해야하나 생각하고 여러 군데 뒤적이다 이렇게 하니
잘되더군요...
DEVICE->GetDevice()->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
DEVICE->GetDevice()->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );
DEVICE->GetDevice()->SetRenderState( D3DRS_ALPHAREF, 100 ); // 알파테스트값 변경..
-
pumpltup
- Posts: 27
- Joined: 2007-10-08 12:46
- Location: 익투스게임즈
Post
by pumpltup »
빨간색으로 표시된 텍스쳐는 이펙트가 먹히지 않고있습니다.
뒷 배경이 검정색 배경이니, 텍스쳐 배경과 똑같이 보여서 이펙트가 그 텍스쳐만 먹힌것 처럼 보이는것 같습니다.
제 라이브러리에서는 이렇게 셋팅하여 사용하고 있으니 참고바랍니다..
Code: Select all
if ( !m_bEffect ) //이펙트 사용하지 않을때 (Screen)
{
g_Mng.m_DirX.GetD3ddev() -> SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
g_Mng.m_DirX.GetD3ddev() -> SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
}
else // 이펙트 사용시
{
g_Mng.m_DirX.GetD3ddev() -> SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
g_Mng.m_DirX.GetD3ddev() -> SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
}