Blinn-Phong reflection model
Blinn-Phong reflection model 은 컴퓨터 과학자 James F. Blinn 이 Phong reflection model을 개량, 확장한 모델입니다.
Blinn-Phong reflection
Blinn Phong reflection은 Phong reflection에서 반사벡터와 view 벡터를, 광원벡터와 view 벡터사이의 중간벡터와 normal 벡터로 대체합니다. 중간벡터가 노말벡터와 가까워지면, 반사벡터와 view 벡터 또한 가까워지는 특성을 이용한 것입니다. 중간벡터가 노말벡터와 일치하는 구간에서 제일 강한 specular 값을 얻을 수 있습니다.
아래는 specular를 각각 phong, blinn-phong으로 구현한 모습입니다.
이론상 비슷한 원리로 구현하기 때문에 사실 둘의 차이는 거의 없어보입니다.
둘의 차이는 무엇일까요?
Phong reflection의 문제점
Phong reflection은 광원의 반사벡터와 view 벡터를 내적한 값을 이용하여 계산합니다. 이 경우에 반사벡터와 view 벡터사이의 각도가 90도를 넘어가게 될 경우, 내적값은 음수가 되기 때문에 보통 0으로 처리하고 그 부분은 빛이 사라지게됩니다.
특히 내적의 지수가 되는, 표면의 shininess 또는 smoothness 속성이 낮아서 거친 반사영역이 생성되는 경우에 더 눈에 띄게 보입니다.
하지만 blinn phong을 이용하면 반사벡터와 view 벡터사이의 각도가 90도가 넘더라도, 중간벡터와 노말벡터 사이의 각도는 90도가 넘지 않기 때문에 phong reflection에서의 문제를 해결할 수 있습니다.
아래의 이미지는 phong과 blinn phong 의 specular를 비교한 자료입니다.
차이가 보이시나요?
Blinn_Phong reflection의 또 다른 특징
blinn phong은 phong에 비해서 specular가 더 날카롭게 생성됩니다.
이러한 특징때문에 수평선에 가까운 바다에서 태양이 반사되거나 젖은 땅에 멀리 떨어진 가로등이 반사되는 등 평면에 대한 반사를 표현할 때, phong reflection보다 blinn phong reflection이 훨씬 표면을 현실적으로 묘사 할 수 있습니다.
또한 phong에서 반사벡터를 구하기 위해 내부적으로 내적을 하는데, blinn phong에서는 이 과정이 없어지고 단순한 덧셈 연산으로 중간벡터를 구하기 때문에 처리도 더 빠릅니다.
결론
phong을 개량한 blinn phong은 phong의 오류를 해결할 뿐만 아니라, 평면인 표면을 현실적으로 표현하는데 더 유리하고, 조금이지만 성능상의 이점도 존재한다.
출처
'Computer graphics > Reflection Model (shader)' 카테고리의 다른 글
Phong reflection model (0) | 2022.05.14 |
---|---|
Lambertian reflectance (램버시안 반사율) (1) | 2022.05.03 |