RGB 값 관련 질문드립니다.
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 값을 그대로 사용하는 상황이여서, 이게 무슨 차이인지 궁금하여 문의 남깁니다.
Answer 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을 참조하시면 도움이 될 것 같습니다:
또한, 더욱 상세한 설명을 원하시면 강의 내용에서 관련 이론 부분을 복습하시는 것도 좋은 방법이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
MeshObject 공용 사용 방법
1
95
2
BuildBLAS 할당 리소스 사이즈
0
80
2
ConstnatBufferPool관련 질문
0
69
2
깃허브에서 받은 코드가 왜 강의코드랑 다를까요
0
73
1
강의에서 말씀해주신대로 폴더에 넣었는데 실행이 되지않습니다
0
87
2
Metal api 강의
0
112
2
섹션6 >> Hello color animation 과제에서 궁금한 점이 있습니다.
1
104
2
비주얼 스튜디오 파일
0
192
2
VkSubmitInfo2에 대해 질문드립니다.
0
124
2
VkImageLayout 열거형에 대해 질문드립니다.
0
136
2
예제 코드 (on_vkQueueWaitIdle)로그 관련
0
189
2
vert_phong.vert negate 질문
0
124
2
glm-tri.cpp 의 glVertexAttribPointer 질문입니다.
0
160
2
vulkan 강의 일정
0
151
2
외적 공식 문의
0
197
1
hello shader 프로그램 실행이 안됩니다.
0
265
1
descriptorSet에 대한 질문들
0
309
2
descriptorCount 에 대한 질문
0
231
2
질문이 있습니다.
0
207
1
섹션2-6 vulkan device 질문
0
267
2
섹션 4-2 command pool
0
192
1
windows에서 shaderc의 빌드 실패 문제 해결방법입니다
3
461
3
뷰포트 간의 z-index
0
202
1
scissor box에서의 테두리 라인 그리기
0
235
1

