2009-05-21 3 views
1

제 엔진에서는 버텍스/픽셀 쉐이더 파일 쌍에서 Cg 쉐이더를로드합니다. 셰이더를 쌓아서 (조명 + 재질 등) 결합 할 수 있기를 바랍니다. 셰이더를 분리 된 함수로 분해 한 다음 그 중 하나의 셰이더 스크립트 문자열을 생성하는 것보다는 Cg에서 다른 셰이더를 쌓는 좋은 방법을 알고 있습니까?Cg 쉐이더 쌓기

답변

2

DirectX 11의 동적 쉐이더 링키지 기능과 비슷한 점이 약간 들리십니까? Cg의 인터페이스 기능을 사용하면 비슷한 것을 구현할 수 있습니다. 조명을 계산하는 방식을 변경하거나 재질 유형을 변경하는 것과 같은 작업을 쉽고 깔끔하게 할 수 있도록 쉐이더를 재구성 할 수 있습니다.

예를 들어, 셰이더를 작성하려고하지만 조명 계산 방법을 변경할 수 있어야한다고 가정 해보십시오. 어떻게 든 빛을 계산할 함수가있는 Light 인터페이스를 정의 할 수 있습니다. LightInterface는 CoolLight 및 UberLight와 같이 구현합니다. 런타임에 다른 매개 변수를 지정하는 것과 거의 같은 방법으로 Light 인터페이스의 구현을 사용해야하는지 지정할 수 있습니다.

이것이 원하는 것인지 확인하려면 Cg 사용자 설명서 (http://developer.download.nvidia.com/cg/Cg_2.2/CgUsersManual.pdf)를 찾아 보시기 바랍니다. "공유 매개 변수 및 인터페이스"를 검색하면 작은 예제가 있습니다.