묻공러
'게임 그래픽스/[전북대] OpenGL' 카테고리의 글 목록

게임 그래픽스/[전북대] OpenGL

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Shadow Map

Shadow Map이란?그림자를 만들어내기 위해서 Shadow Map을 활용한다모델링 과정에서 생성하는 노말맵과는 달리 쉐도우맵은 리얼타임으로 생성 및 적용한다  Shadow Map 방법 - Two pass algorithm Shadow Map을 실시간 생성 및 적용을 하기 위해서는두 번의 렌더링 과정을 거치기에 two pass algorithm이라고 부른다여기서 algorithm은 렌더링 과정을 의미한다1. Shadow Map 생성을 위한 렌더링 2. 생성된 Shadow Map을 Scene에 렌더링 1) Shadow Map 생성을 위한 렌더링해당 렌더링은 real 렌더링이 아니다단순히 데이터만 만들어내고 유저에게 보이기 위한 렌더링은 아니라는 것이다렌더링을 하는 방법은가상의 카메라를 light sour..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Normal Map

Normal Map이 왜 필요한가?위의 그림처럼버텍스가 많고 노말이 모두 다른 고품질 모델의 경우는라이팅 효과가 적절히 되면서 실제처럼 체감을 할 수 있다그런데 버텍스가 많으면 gpu 병렬 처리 연산이 많아지고 프레임이 저하된다이를 해결하기위해서 Normal Map을 사용한다 Normal Map이란?고품질(복잡한) 모델에서 노멀정보만을 추출해서 texture 형태로 저장한 것을 Normal Map이라고 한다노멀맵은 offline과정으로 모델러가 직접 생성한다 이렇게 저장된 노멀맵과 버택스 4개 만을 사용한 사각형으로굴곡이 느껴지게끔 만들어준다NormalMap을 만드는 방법1) Height map 생성Height field를 추출해 Height map을 만든다 얼마나 튀어놔와있는지 높이를 저장하는RGB 값..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Quaternion

오일러 Transform오일러 Transform에서오일러 각을 이용해서 x축, y축, z 축으로 얼마 회전했는지를 쉽게 알 수 있다 주의할 점은,행렬의 교환법칙은 성립하지 않기 때문에x, y, z축의 회전행렬의 곱의 순서에 따라 결과는 달라진다는 점이다 Key Frame AnimationKey Frame Animation이란아래의 그림처럼특정 키 프레임의 간격 사이에서 발생하는 부분을 자연스럽게 채워 넣는 부분으로lerp(linear interpolation)를 통해 이를 구현한다 또한, 좀더 자연스럽게 이를 구현하기 위해서linear가 아닌 curve를 이용하기도 한다  오일러 각의 문제점아래의 예시를 보면 알다시피오일러 각 x, y, z 축을 interpolation을 하는 경우에 비틀리는 문제가 발..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Output Merger - Alpha Blending

Alpha Blending Alpha Blending은 물체의 투명도에 따라 색의 계산을 다르게 적용해 주는 것이다 alpha 값은 0 ~ 1로 구성되어 있으며 0에 가까울 수록 불투명하고 1에 가까울 수록 투명하다 Alpha Blending을 계산하기 위해서는 0과 1 사이의 가중치를 통해 계산한다 Transparent Sorting z-buffering의 경우는 렌더링 순서와 상관이 없지만 alpha blending은 반드시 뒤 쪽부터 그려줘야 한다 따라서 투명한 오브젝트들의 sorting이 필요하다 추가적으로, 오브젝트들은 geometry, alpha, transparent 순으로 그려진다 Alpha Blending in OpenGL Alpha Blending을 사용하기위해서는 glEnable을 통..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Output Merger - Z buffering

Output Mergerfragment shader를 통해 나오는 fragment color를 바로 viewport에 그리지 않고마지막으로 frame buffer들을 통해 output merger 단계를 거친다 Frame buffer Frame buffer에는 Color buffer, Depth buffer, Stencil buffer가 있다 Color buffer는 픽셀의 색상을 저장하는 버퍼이다화면 출력과 후처리 효과에서 활용된다 Depth buffer(z-buffer)는 픽셀의 z축(깊이) 값을 저장하는 버퍼이다Z buffering, 그림자 생성에서 활용된다 Stencil buffer는픽셀별로 추가적인 마스킹 정보를 저장한 버버이다특정 영역을 그릴 때 무시하거나 그리지 않도록 하는데 활용된다ex. ..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Lighting - Ambient, Emmisive

Ambient Term특정한 빛이 들어오는 것이 아닌간접적으로 빛들이 다양한 형태로 들어오는 경우를 의미하고빛의 source를 정확히 알 수 없기 때문에, 물체의 주변광 ambient 색과 물체의 material ambient 색을 곱해서 계산한다 Emmisive Termmaterial 표면 자체가 빛을 발산하는 경우이고material의 emmisive 값 만으로 계산이 된다 Phong Lighting Modeldiffuse, specular, ambient, emissive를 모두 합한 것이바로 Phong Lighting Model을 적용한 것이다 Per-fragment Lightingfragment shader에서 라이팅을 위해서는 l, n, r, v 값을 알아야 하고해당 값들을 fragment sh..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Lighting - Diffuse, Specular

Lighting Lighting은 lights와 objects의 상호작용을 관리하는 기술이다 대표적이었던 방식 중 하나는 Phong Model 방식이다 최근에는 PBR(Physically Based Rendering) 방식이 대중화되었다 하지만 이론적으로 배우기 쉽지 않기에 Phong Model 방식으로 Lighting의 개념을 배우는 것이 추천된다 Light source 광원에는 총 4가지 종류의 광원이 있다 이 글에서는 Directional light를 기준으로 Phong Model을 설명한다 Directional light는 태양과 같은 light이고 light의 방향은 물체의 위치와 관련 없이 동일하게 방사된다는 점을 기반으로 한다 - Directional light : 태양과 같은 light -..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Fragment Shader

texCoord in Vertex Shader texCoord는 그대로 넘겨주면 rasterizer의 Scan Conversion을 통해 처리된다 Fragment Shader Fragment Shader는 픽셀에 색상을 입히는 처리를 하는 부분이다 Fragment Shader로 넘어올 때, texture는 Uniforms로 넘어오게 된다 전체적으로 정리하면 아래와 같다

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Texture Wrapping과 Texture Filtering

Texture Wrapping Mode texture wrapping mode를 활용하면 (s, t)가 0, 1 범위가 아닌 경우에도 쉽게 활용할 수 있다 0, 1 범위 밖에서 texture coordinates에 맞게 어떻게 색상을 표시할지 옵션을 정해서 결정할 수 있다 Clamp-to-Edge 1 이상의 좌표를 모두 1의 좌표로 계산한다 Repeat (1, 1)을 (0, 1)로 계산한다 Mirrored-Repeat (1, 1)을 (0, 9)로 계산하고 좌우반전이 된다 S(Repeat) + T(Mirrored-Repeat) 각 축에 따라 다른 설정을 할 수도 있다 S축은 Repeat을 하고 T축은 Mirrored-Repeat을 할 수 있다 Texture Filtering 픽셀과 텍셀의 개수가 동일하지 ..

게임 그래픽스/[전북대] OpenGL

[OpenGL Note] Image Texturing

Fragment shader Rasterizer 단계에서 Scan Conversion을 통해서 프래그먼트들의 정보를 다 넣어줬고 이러한 정보를 활용해서 색을 칠해서 픽셀을 만들어주는 과정이 fragment shader에서 진행되는데 픽셀을 만들어주는 과정 중에 대표적인 것이 Lighting과 Texteuring이다 Texture Coordinates 다양한 텍스쳐링 방법 중 하나는 image texturing이다 image texturing은 모델에 이미지를 입히는 것을 의미한다 텍스쳐는 fragment의 pixel처럼 texels(texture elements)의 형태로 구성되어 있다 Texturing 아티스트가 modeling 단계에서 텍스쳐링을 위해 (s, t) 혹은 (u, v) 형태의 textur..