3D 엔진에서 조명을 구현 중이며 조명 계산 방법에 결함이 있음을 발견했습니다. 결합 쉐이더에서는 분산 색상과 조명 계산을 얻습니다.조명 계산의 올바른 방법
return diffuseColor * (diffuseLight + ambient);
내가 알 수있는 한, 이것은 일을하는 표준 방법입니다. 그러나 예를 들어 색상이 0,1,0이고 광원이 1,0,0 인 경우 어떻게됩니까? (이 예제에서는 앰비언트 무시) 결과는 0,0,0이됩니다. 그러나 실생활에서 순수한 초록색 종이를 얻고 그것에 착색 된 붉은 빛을 비추면 황색이됩니다. 또는 최소한 흑인이 아닙니다.
다른 게임이 어떻게이 문제를 해결합니까?
내가 설명했던대로 작동한다는 것을 맹세 할 수있었습니다. 나는 오랫동안 컴퓨터로 작업 해 왔을 것임에 틀림 없다. 적어도 나는 그것을 생각한 유일한 사람이 아니었다. 내가 여기 물어보기 전에 내 친구와상의했다. – Programmdude