2010-08-09 4 views
1

내 엔진에 후 처리 관리자를 구현하는 방법에 대해 생각해 보았습니다 (Vanquish).

후 처리 관리자 구현

포스트 프로세싱 기술이 어떻게 작동하는지 고민 중입니다. 나는 creators.xna.com webiste에서 Post Processing 샘플을 읽고 보았지만 Post Processing 효과를 적용한 모델을 다시 렌더링하는 것으로 보입니다.

정적 모델에는이 기능을 추가 할 수 있지만 스킨이 적용된 모델을 다시 그릴 때는 효과에 대한 자체 기술이 있으므로 혼란 스럽습니다.

누군가 나를 올바른 방향으로 안내하여 내 생각을 교정 할 수 있습니까?

답변

1

일반적으로 사후 처리는 전체 화면에서 작동합니다. 이것은 매우 간단합니다. 당신이 렌더링 이후 모든 렌더링되는이 시점에서

GraphicsDevice.SetRenderTarget(renderTarget); 

: 장치에 렌더 타겟을 설정하는 일

은 (난 당신이 샘플에서 렌더 타겟을 만드는 방법을 알아낼 수 가정) 그 대상을 렌더링합니다.

GraphicsDevice.SetRenderTarget(null); 

을 그리고 마지막으로 당신이 XNA 3.1, 텍스처 (this is new in XNA 4.0 인 것처럼 전화를했다 당신의 목표를 렌더링 사용하여 그릴 수 있습니다 : 당신은 당신이 백 버퍼에 그리기 다시 장치를 설정할 수 있습니다 끝나면 그것에 GetTexture).

그래서 후 처리 효과를 만들기 위해 :

  • 다시 전환 백 버퍼
  • 에 렌더 타겟에 장면을 렌더링하여 렌더링 대상을 전체 화면 렌더링을 (할 것 SpriteBatch 사용) 후 처리 효과를 적용 할 픽셀 쉐이더가 있습니다.

모델마다이 작업을 수행 하시겠습니까? 어떤 종류의 이상하지만 certianly 가능한 것 같습니다. 렌더 타겟에 투명한 알파 채널이 있는지 확인한 다음 알파 블렌딩으로 그립니다.

아니면 후 처리를 의미하지 않습니까? 스키닝 된 모델 버텍스 쉐이더를 유지하면서 실제로 모델이 그려지는 픽셀 쉐이더를 변경 하시겠습니까?

+0

이것은 훌륭한 정보입니다. 나는 모델 단위로 그것을하고 싶지 않다. 이것은 정확히 내가 벗어나려고하는 것이다 : o) –