해결된 질문
작성
·
24
·
수정됨
0
light.position = {-3.0f, 3.0f, 3.0f, 1.0f};
light.ambient = {0.2f, 0.2f, 0.2f, 1.0f};
light.diffuse = {5.0f, 5.0f, 5.0f, 1.0f};
light.specular = {7.0f,7.0f, 7.0f, 1.0f};
light.att = {1.0f, 0.2f, 0.2f, 1.0f};
material.ambient = { 1.0f, 1.0f, 1.0f, 1.0f };
material.diffuse = { 1.0f, 1.0f, 1.0f, 1.0f };
material.specular = { 1.0f, 1.0f, 1.0f, 1.0f };
material.shineness = 32.0f;
강의에서 렌더링에 사용된 광원, 매터리얼 파라미터 값들입니다.
RGB를 나타내는 값은 일반적으로 0.0~1.0 사이의 float 값을 써서, 이를 0~255 정수범위로 매핑해서 사용한다고 알고 있습니다.
하지만 강의에서는 1.0 이 넘는 float 값을 그대로 사용하는 상황이여서, 이게 무슨 차이인지 궁금하여 문의 남깁니다.
답변 2
0
안녕하세요.
색상 값이나, reflection coefficient 는 말씀하신 대로, 0.0 ~ 1.0 사이의 값으로 설정하는게 맞고, 실제로 그렇게 설정하고 있습니다.
문제는 light source 의 경우에는 빛의 색상도 중요하지만, 빛의 강도(intensity) 도 표현하고 있다는 점 입니다. Phong 의 수식을 보면, 특히 point light source 의 경우, 거리(distance)에 따른 attenuation term을 적용하고 있는데, 이 때문에, 거리에 따라서 intensity가 급감할 수 있습니다.
이 때문에, attenuation coefficient 들을 잘 조정하거나, 또는 light intensity를 높여서, 거리가 떨어져 있어도 Phong 수식에서 적당한 밝기가 나오게 하는 방식을 쓰고 있습니다.
이 부분은 최종 밝기가 적절히 나오면 되는 셈이라서, 빛의 강도를 적절히 조정해도 큰 문제는 없습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 샤니캉님, 질문해 주셔서 감사합니다!
일반적으로 RGB 값은 0.0에서 1.0 사이의 float 값으로 표현되며 이는 우리가 화면에 표시할 수 있는 범위 내에서 색상을 나타내는 데 사용됩니다. 이는 0에서 255까지의 정수 값에 매핑되어 디지털 디스플레이에서 색상을 표현하곤 합니다. 그러나 그래픽스 프로그래밍에서는 종종 1.0 이상의 값을 사용할 수 있습니다. 여기에 대한 몇 가지 이유를 설명드리겠습니다:
HDR(고휘도 범위) 렌더링: 고휘도 범위는 매우 밝거나 어두운 장면을 표현할 때 유용하며, 1.0 이상의 값은 이러한 광도 차를 더 잘 표현할 수 있게 합니다. 예를 들어, HDR 콘텐츠는 실제 환경의 조명을 더 사실적으로 표현하는 데 사용되며, 이 경우 1.0이 넘는 값이 사용됩니다.
빛의 강도 표현: 1.0 이상의 RGB 값을 사용하면 빛을 더 강하게 표현할 수 있습니다. 이는 강한 빛이나 하이라이트를 시뮬레이션할 때 유용하며, 스페큘러(반사광) 효과 같은 것에 특히 중요합니다.
렌더링 후처리 효과: 일부 렌더링 기법 또는 후처리 효과에서는 1.0을 초과하는 값이 계산되고, 이후 톤 매핑(tone mapping)과 같은 기술을 사용하여 0-1 범위로 다시 맵핑됩니다.
‘light.diffuse’와 ‘light.specular’에 설정된 높은 값들(예: 5.0, 7.0)은 이러한 이유로 사용될 수 있으며, 특정 시각적 효과를 얻기 위한 것입니다.
관련 질문에 대한 더 많은 정보를 원하신다면 아래 URL을 참조하시면 도움이 될 것 같습니다:
또한, 더욱 상세한 설명을 원하시면 강의 내용에서 관련 이론 부분을 복습하시는 것도 좋은 방법이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.