일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CeisumJS
- vscode
- lighting model
- GLFW
- visual studio code
- GLM
- WebMapTileService
- 세슘JS
- 탄젠트 공간
- 세슘
- WMTS
- 지오서버
- 브이월드
- V-World
- WebMapService
- Specular
- CesiumJS
- WMS
- GetTile
- OpenGL
- VBO
- Phong
- vs code
- Diffuse
- WebMercatorTilingScheme
- Geoserver
- WebMapServiceImageryProvider
- Cesium
- glad
- Visual Studio
- Today
- Total
엉뚱하고 기발하게
Blinn-Phong reflection model 본문
본 블로그는 개인적인 공부를 목적으로 작성되었습니다.
작성된 블로그의 내용은 다른 사이트, 블로그를 참고하였으며, 저작권 문제가 있다면 수정하겠습니다.
또한 잘못된 내용으로 인한 불이익은 사용자에게 있습니다.
Blinn-Phong reflection model은 Phong reflection model을 개선한 모델이다. Blinn-Phong의 경우 기존의 Phong 모델에서 Specular reflection이 개선 되었다.
기존의 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
'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 |