엉뚱하고 기발하게

Blinn-Phong reflection model 본문

Graphics/OpenGL

Blinn-Phong reflection model

songsmir 2020. 10. 19. 18:12

본 블로그는 개인적인 공부를 목적으로 작성되었습니다. 

작성된 블로그의 내용은 다른 사이트, 블로그를 참고하였으며, 저작권 문제가 있다면 수정하겠습니다.

또한 잘못된 내용으로 인한 불이익은 사용자에게 있습니다.


Blinn-Phong reflection model은 Phong reflection model을 개선한 모델이다.  Blinn-Phong의 경우 기존의 Phong 모델에서 Specular reflection이 개선 되었다.

 

[그림 1] Phong, Blinn-Phong 관련 벡터

 

기존의 Phong 모델의 Specular reflection 식은 아래와 같다.

 

$ K_s I_s (\hat{R} \cdot \hat{V})^{n} $

 

이 식에서 $\hat{R}$를 구하기 위한 식은 아래와 같다.

 

$ \hat{R} = \hat{L} - 2.0 * (\hat{N} \cdot \hat{L}) \hat{N} $

 

위와 같이 반사 벡터를 구하기 위해서 매번 $\text{dot}(\cdot)$ 연산을 수행해야 한다.

 

Blinn-Phong 모델의 경우 $\hat{R}$를 사용하는 대신 중간 벡터 $\hat{H}$를 사용한다.

 

$ \hat{H} = \frac{ \hat{L} + \hat{V} } { \parallel \hat{L} + \hat{V} \parallel } $

 

Blinn-Phong의 중간 벡터 $ \hat{H} $은 Phong의 반사 벡터 $ \hat{R} $보다 가볍게 구할수 있다.  그 이유는 Phong 모델의 경우 FragmentShader에서 $\hat{N} \cdot \hat{L}$ 연산을 수행 해야 하지만, Blinn-Phong 모델의 경우 VertexShader에서  $ \frac{ \hat{L} + \hat{V} } { \parallel \hat{L} + \hat{V} \parallel } $을 하면 되기 때문에다.

 

Blinn-Phong의 Specular reflection식은 아래와 같다.

 

$ K_s I_s (\hat{N} \cdot \hat{H})^{n} $

 


en.wikipedia.org/wiki/Blinn%E2%80%93Phong_reflection_model

blog.naver.com/canny708/221550553649

gyutts.tistory.com/165?category=755809

'Graphics > OpenGL' 카테고리의 다른 글

Lambertian reflectance  (0) 2020.10.19
Phong reflection model(Phong lighting model)  (0) 2020.10.19
Vertex Buffer Object(VBO)  (0) 2020.10.11
Comments