Ambient Light란?
Ambient Light, 주변광은 일반적으로 Scene의 전체적인 밝기와 색상을 정의하는데 사용합니다. 실세계의 빛을 컴퓨팅하기엔 굉장히 많은 변수들이 존재하고, 또 이를 구현한다하더라도 소모되는 컴퓨팅 자원이 굉장히 부담스럽기 때문에, 실세계와 상당히 근사한 조명 모델을 사용하여 조명을 구현합니다.
일반적으로 나무의 색상은 갈색이지만, 위 사진에선 거의 검정색으로 보입니다.
그 이유는 나무의 색상, 즉 나무에 의해 반사된 빛 뿐만 아니라 흙, 물, 등 수많은 광원들에 의해 산란된 빛의 영향을 받고, 애당초 흔히 가정하는 빛의 색상(#ffffff)이 구름에 의해 반사되어, 상당히 어둡습니다.
뿐만 아니라 여러 요인들이 더 있지만, 이정도만 해도 컴퓨팅하는데 있어서 꽤나 많은 자원들이 소모됩니다.
따라서 각 광원에 의해 산란된 빛의 조합을 이용하기 보단, 아예 전체적인 빛의 값을 주어 빛의 산란에 근사시킵니다.
빛의 값은 상수값이기에 fragment shader에 넣기 쉽습니다.
다음과 같이 말이죠.
void main(){
vec3 baseColor = vec3(1.0);
vec3 ambient=vec3(.5);
vec3 lighting = vec3(0.0);
lighting=ambient;
vec3 color=baseColor*lighting;
gl_FragColor=vec4(color,1.);
}
'WebGL' 카테고리의 다른 글
[Graphics] 조도(Irradiance)와 휘도(Radiance) (0) | 2023.07.15 |
---|---|
[WebGL] Hemisphere Lighting (0) | 2023.07.09 |
[WebGL + Three] Textures (텍스쳐 다루기) (0) | 2023.07.02 |
[WebGL + Three.js] GLSL - colors (1) | 2023.03.23 |
[Graphics] Transformation Pipeline (local ~ screen 좌표계) (0) | 2023.03.19 |