2012-04-08 5 views
0

만약 우리가 버텍스 쉐이더와 프래그먼트 쉐이더를 사용하여 안개를 생성한다면, 일반적인 방법 중 하나는 버텍스 쉐이더에서 버텍스의 거리를 계산하고 프래그먼트 쉐이더에서 안개 혼합 색상을 적용하는 것입니다.누가 삼각형 내부의 점에 대해 gl_FragColor를 계산 했습니까?

제 질문은 삼각형 정점의 거리 만 계산했기 때문에 OpenGL에서 삼각형 내부의 점 색상을 어떻게 결정합니까? 자동으로 계산되는 경우 계산을 제어 할 수있는 방법이 있습니까?

답변

2

OpenGL ES 2에서, 버텍스 셰이더에서 프래그먼트 셰이더로 전달 된 모든 애트리뷰트의 값은 음영 처리되는 삼각형의 표면에 대해 원근 보정으로 선형 보간됩니다.

OpenGL의 다른 버전에서는이 동작을 변경할 수 있습니다.

예를 들어 안개의 경우 안개 공식이 전 세계 공간에서 선형 함수 인 경우 꼭지점 셰이더의 안개 값을 프래그먼트 셰이더의 gl_FragColor와 혼합하여 올바르게 표시해야합니다.

그러나 안개가 선형이 아닌 경우 올바른 결과를 얻으려면 조각 쉐이더에서 각 조각의 안개 값을 개별적으로 계산해야합니다.

관련 문제