중급 튜토리얼 7-3 (마지막)
Ogre3D 삽질란/Intermediate Tutorial 7 2009. 1. 15. 22:36
RTTs and shaders
RTT로 셰이더 보내기
RTT는 종종 셰이더와 함께 사용됩니다. 그렇기에 RenderTexture의 전달방법에 대해서 알아둘 필요가 있습니다. 걱정마세요. 무척이나 간단합니다.
가장 단순한 예를 들자면 셰이더를 위한 텍스쳐가 실행시간동안 한번도 바뀌지 않는경우 입니다. 텍스쳐를 바꿀 필요가 없을경우 재질스크립트의 이름만 알려주면 됩니다. 이번 예제에서 쓰인 경우는 RttTex입니다. 재질 속성파일에서의 texture_unit 속성은 다음처럼 되어야 합니다 :
texture_unit
{
texture RttTex
}
만약 셰이더에 사용되는 텍스쳐가 바뀌게 된다면 다음의 2줄을 추가해 주세요 :
Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName("Sepia");
material->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName("OtherRttTex");
첫번째 라인에서 새로 사용하고싶은 재질에 대한 포인터를 구하고(위에서 사용된 경우는 Sepia 셰이더 재질입니다) 두번째라인에서 텍스쳐이름을 적당한 이름으로 바꿔줍니다.
앞에서 설명드린 2가지 방법중 하나로 재질 스크립트내부에서 올바른 텍스쳐이름을 설정했다면 다음라인을 통해서 cg셰이더텍스쳐에 접근이 가능해 집니다:
uniform sampler2D SceneSampler : register(s0)
잘 마무리 지어졌습니다. 미니스크린속의 텍스쳐는 셰이더효과를 통해서 다음과 같은 형태로 보일 것 입니다(sepia 셰이더 효과):
결론
RTT를 시작하기위한 기초적인 내용이었습니다. 이 코드로 부터 차근차근 단계를 쌓아보고 그래픽효과에 대한 새로운 세상으로 도전해 보세요.