Graphics

·Graphics
참고https://www.yes24.com/Product/Goods/24301920https://learnopengl.com/Advanced-Lighting/SSAOSSAO이름에서 알 수 있듯이, 포스트 프로세싱 과정 중 하나이다. 이전에 Ambient Lighting에 대해서 공부하였고 해당 라이팅은 고정된 빛에서 빛이 산란됨에 따라 장면이 그려지는 것을 표현한 것이다. 간접적인 라이팅의 한 종류를 Ambient occlusion이라고 부른다. 이러한 종류의 간접 라이팅은 서로가 밀접하게 붙어있기 때문에 더 어둡게 보인다는 특징이 있다. Crytek 발표자표2007년에 Crytek에서 발표한 기술로 depth buffer를 screen-space에서 이용해 occlusion의 크기를 결정한다. 이론은 ..
·Graphics
참고https://learnopengl.com/Advanced-Lighting/Deferred-Shadinghttps://www.slideshare.net/slideshow/deferred-shading/1552178?from_search=0#1https://www.slideshare.net/slideshow/ndc11-deferred-shading/8192630?from_search=1https://kyuhwang.tistory.com/4?category=523414#Deferred%EC%-D%--%--%EC%-D%B-%EC%A-%--Deferred Shading보통 사용하는 방식은 Foward Shading방식이다. 해당 방식은 각각의 오브젝트마다 라이팅을 하는 방식으로 라이트의 개수가 늘어날수록 비..
·Graphics
참고https://learnopengl.com/Advanced-Lighting/Normal-Mappinghttps://blog.naver.com/ideugu/221402703960Normal Mapping모든 장면들은 셀 수 없이 많은 삼각형들로 이루어진 meshes이다. 이런 평평한 삼각형 2D Texture에게 생기를 불어주는 것이 해당 기술이다.예를 들어, 벽돌 벽면이 존재한다고 한다면 빛은 벽돌 사이의 작은 크랙들을 인식하지 못한다. 왜냐하면, 표면의 normal vectors가 수직(perpendicular)적이기 때문이다.위의 사진들을 비교하면 확연한 차이가 나타나는 것을 확인할 수 있다. 노말 맵을 적용하기 위해서는 한 가지 Resource가 필요하다. DirectX형태의 자료는 Y값을 반전..
·Graphics
구성요소물체를 그리기 위해서는 필요한 것은 vertices, indices, normals라는 기본적인 3개의 구성요소이다.해당 요소를 쉽게 정리하기 위해서 MeshData, Mesh라는 클래스를 정의하였다.Mesh해당 클래스의 경우에는 물체를 그리기 위해 필요한 buffer들을 담아두는 역할을 한다. 우리가 만드는 도형에다가 텍스쳐 이미지를 사용할 수 있으므로, 이에 대비해 texture2D와 SRV를 정의한다.struct Mesh { // Mesh Constant // uint16_t Material Constant (materialCBV) // PSO ComPtr vertexBuffer; ComPtr indexBuffer; ComPtr vertexConstBuffe..
·Graphics
참고https://learnopengl.com/Advanced-Lighting/Shadows/Point-Shadowshttps://www.gamedev.net/forums/topic/659535-cubemap-texture-as-depth-buffer-shadowmapping/https://gamedev.net/forums/topic/674787-cubemap-depth-sample/5271471/ 지난 번에 만들었던 Shadow Mapping 기술의 그림자는 directional lights에 적합한 기술이었다. 왜냐하면 그림자가 오직 light가 진행하는 방향에서만 발생하기 때문이었다. 그 이유는 빛의 시점을 이용해서 그림자를 그렸기 때문이다.Point Shadows해당 기술은 지난번 만들었던 것과 ..
·Graphics
참고https://learnopengl.com/Advanced-Lighting/Shadows/Shadow-MappingShadow Mapping기본적으로, 그림자는 occlusion으로 인한 빛의 부재로 인해 그림자가 발생하게 된다.![[빛의 시점에서 렌더링.png]]실시간 렌더링 환경에서 그림자를 그리는 아이디어는 빛의 시점에서 렌더링을 하는 것이다. 이러한 방법으로 수천 개의 빛 광선을 그리는 것은 극도로 비효율적인 접근이다. 실시간 렌더링에서는 부적합한 방법이다.그래서 빛 광선에서의 시점을 그대로 그리는 대신에 유사한 방법으로 depth buffer를 이용할 것이다. 이것을 shadow map이라고도 부른다. 빛의 시점에서 depth buffer를 그리는 것이다.depth value를 이용해서 가장..
·Graphics
참고https://opengl-notes.readthedocs.io/en/latest/topics/texturing/aliasing.htmlhttps://learnopengl.com/Advanced-OpenGL/Depth-testing홍정모 - 그래픽스 Part3 강의Depth BufferDepth buffer는 D3D11의 경우에는, DepthStencilBuffer를 통해서 만들어진다. 해당 버퍼를 통해서 16, 24 또는 32 bit floats로 구성할 수 있다. 대게 Depth buffer 24bit, Stencil buffer 8 bit를 할당한다.Depth란 결국 '화면에 그려지는 친구들'의 깊이 축(z-coordinate)이다. 화면에 그려진다는 것은 View Frustum 안에 들어와 있..
·Graphics
필요한 준비물환경맵 텍스쳐를 그려줄 육면체환경맵 텍스쳐육면체 그리기먼저, 육면체를 그리기기 위해서는 사각형을 그려줘야 한다. 사각형이란 면으로써 점이 선을 이루어 그리는 것이다. 특히, rasterize환경에서는 사각형은 삼각형 두 개의 모습으로써 구성된다.사각형을 그릴 때 중요한 특징은 해당 면의 왼쪽 아래부터 그린다는 점이다. 이는 D3D가 왼손좌표계인 것도 이지만, 더욱 중요한 것은 NDC가 왼쪽아래부터 시작한다는 점이다. 이러한 영향으로 인해 그림을 그릴 때 왼쪽 아래 좌표부터 그리는 것이 자연스러운 것이 되었다고 이야기 한다.사각형은 면이 하나이므로 왼쪽 아래 부터 시계방향으로 삼각형을 그리는 것을 가정하면 그리기 간단하다.글로 쓴다면, 왼쪽 아래 -> 왼쪽 위 -> 오른쪽 위 -> 오른쪽 아래..
·Graphics
개요Phong Shading 모델에서는 단순히, R(Reflection)와 L(ight)의 dot product를 이용해서 viewer가 보고 있는 surface의 빛의 강도를 구할 수 있다.Blinn-Phong의 경우, H(Halfway Vector)라는 개념이 추가로 등장한다.본격적으로 소개하기전 Phong 모델의 경우, $Ambient + Diffuse + Specular$ 을 통해 해당 부분의 Color 값을 도출한다. Blinn-Phong에 의해 달라진 점은 $Specular$을 계산하는 부분이다.참고https://web.archive.org/web/20180816064924/http://www.sunandblackcat.com/tipFullView.php?l=eng&topicid=30https..
·Graphics
Texture2D 데이터를 언제 GPU로 옮기는 것일까?Constants Buffer는 ~SetConstantBuffers()함수로 통해서 설정하기만 하면 된다.상수 버퍼는 프로그램 가능 셰이더 단계들에 연결하고 HLSL에 접근하는 버퍼이지만, 그 내용을 자원 뷰가 다르게 해석해야 할 여지는 없다. 따라서, 그대로 노출되는 상수버퍼는 자원 뷰를 사용할 필요가 없다.HLSL 안에서 상수 버퍼는 cbuffer라는 키워드를 이용해서 선언하는 구조체에 대응된다.그렇다면 Texture2D는 어떻게 해야할까?SRV를 통해서 등록해서 사용해야 한다. 그럼 어디서 SRV에 등록해야할까? 해당 코드에서 볼 수 있듯이, 모델을 불러오면서 SRV를 초기화해주는 것을 알 수 있다.if (!meshData.albedoTextu..
RUNNING_OJUNG
'Graphics' 카테고리의 글 목록 (2 Page)