2011-11-08 6 views
-1

구를 음영 처리하려고합니다. 나는 구의 각 버텍스에 대한 법선을 계산했지만, 패싯상의 다른 픽셀들이 어떻게 음영 처리되는지 이해하지 못합니다. 이것에 대한 도움이 필요하십니까? OpenGL 3 이상을 사용하고 있습니다.Gouraud 음영을 사용하여 구면 음영

+2

코드와 문제점을 알려주십시오. 기본적으로 모서리에서 계산 된 색상은 단순히 표면 위에 보간됩니다. – Bart

+0

"패싯의 다른 픽셀이 음영 처리되는 방식을 이해하지 못합니다." 어떻게 그 (것)들을 음영 처리되기를 원하십니까? –

답변

2

Gouraud 쉐이딩의 경우 조명 모델은 삼각형의 각 꼭지점에 대해 계산되고 삼각형 픽셀을 통해 선형 적으로 보간됩니다.

OpenGL에서 버텍스 쉐이더의 각 버텍스에 대한 리듀 팅 모델을 가변적으로 프래그먼트 셰이더에 전달 된 컬러 벡터로 계산 한 다음 선형 보간이 자동으로 "무료"로 수행됩니다.

퐁 쉐이딩을 원하면 프리젠 테이션 쉐이더에 직접 정점 법선을 전달하면 자동으로 선형 보간됩니다. 그러면이 보간 된 법선을 사용하여 프래그먼트 쉐이더에서 조명 모델을 계산합니다.

+0

이것은 내가 얻지 못하는 것입니다 >> "선형 보간은 자동으로"자유롭게 수행됩니다. " 기본적으로 음영 처리를 위해 주 코드가 엉망이되지 않도록 * .vert 및 * .frag 파일을 편집해야합니다. –

+0

이 보간법을 비활성화하는 유일한 방법은 이전 OpenGL 호환성 프로파일과 함께 glShadeModel (GL_FLAT)을 활성화하는 것입니다. 그리고 위의 경우를 제외하고는 모든 것을 쉐이더에서 할 수 있습니다. – Blackhex