<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Graphics on GameDev Docs</title><link>https://jukim2.github.io/categories/graphics/</link><description>Recent content in Graphics on GameDev Docs</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 08 Jul 2024 19:00:00 +0900</lastBuildDate><atom:link href="https://jukim2.github.io/categories/graphics/index.xml" rel="self" type="application/rss+xml"/><item><title>Vertex Shader</title><link>https://jukim2.github.io/docs/cs/graphics/vertex_shader/</link><pubDate>Mon, 20 May 2024 01:00:00 +0900</pubDate><guid>https://jukim2.github.io/docs/cs/graphics/vertex_shader/</guid><description>들어가며 link 안녕하세요 이번 글은 그래픽스와 관련하여 서술하게 되었습니다.
제가 어제 기업 직무 테스트를 치르고 왔는데 그래픽스와 관련하여 모르는 내용이 많은 것을 확인하였습니다.
그래서 고려대 그래픽스 강의를 참고하여 관련 내용을 정리해보려고 합니다.
GPU Rendering Pipeline link 컴퓨터 그래픽스의 목표는 컴퓨터 안에 있는 3차원 공간을 우리가 보는 화면인 2차원 디스플레이에 표현하는 것입니다. 영화를 만들고 그림을 그리는 것처럼 말입니다.
우리는 여러가지 과정을 거쳐서 이를 실현 가능한데 이 과정을 렌더링 파이프라인(Rendering Pipeline)이라고 합니다.</description></item><item><title>Rasterizer</title><link>https://jukim2.github.io/docs/cs/graphics/raterizer/</link><pubDate>Thu, 20 Jun 2024 01:00:00 +0900</pubDate><guid>https://jukim2.github.io/docs/cs/graphics/raterizer/</guid><description>Rasterizer link Rasterizer는 vertex shader를 통해 얻은 정보들에 대해 사후처리를 하는 과정으로 크게 아래의 과정을 진행합니다.
Clipping Perspective division Back-face Culling Viewport transform Scan conversion Clipping link Clipping은 공간 상에서 view frustum안에 있는 정보를 제외하고는 버리는 과정으로 아래와 같이 영역에 걸리거나 밖에 있는 정보를 삭제합니다.
Perspective division linkvertex shader에서 마지막에 projection transform을 진행한다고 하였는데 그러한 projection transform은 아래의 M_proj 행렬을 통해 이루어집니다.
camera space에 있던 좌표들에 위의 변환 행렬을 적용하게 되면 좌표들은 4차원이 되어 homogeneous clip space에 위치하게됩니다.</description></item><item><title>Image Texturing</title><link>https://jukim2.github.io/docs/cs/graphics/texture_map/</link><pubDate>Mon, 08 Jul 2024 01:00:00 +0900</pubDate><guid>https://jukim2.github.io/docs/cs/graphics/texture_map/</guid><description>Texturing and Lighting link vertex shader와 rasterizer를 거치면서 pixel들의 좌표와 normal 벡터들을 얻어냈습니다. 그렇다면 이 정보들을 토대로 texture와 light를 입혀서 최종적으로 화면을 그려낼 수 있을 것입니다.
이번 글에서는 Texturing에 대해서 정리해보도록 하겠습니다.
Texturing link Texturing은 아래와 같이 물체에 texture를 씌우는 과정을 의미합니다.
이렇게 텍스쳐를 씌우는 것은 굉장히 간단하게 이루어지는데요. 우선 각 vertex에는 texture corrdinates(s,t)가 존재합니다. 그러므로 이 좌표를 통해 texture에서의 적당한 지점을 가져오게 되면 물체에 texture를 씌울 수 있습니다.
그렇다면 texture coordinate만 있으면 texturing은 쉽게 진행되는 것 같은데 이것은 언제 할당될까요?</description></item><item><title>Lighting</title><link>https://jukim2.github.io/docs/cs/graphics/lighting/</link><pubDate>Mon, 08 Jul 2024 17:00:00 +0900</pubDate><guid>https://jukim2.github.io/docs/cs/graphics/lighting/</guid><description>Lighting link pixel들에 texture까지 입힌 상황에서 마지막으로 남은 것은 빛을 입히는 것입니다. 실제로 빛이 있고 없고는 엄청나게 큰 퀄리티 차이를 만드는데요, 이 글에서는 phong lighting model을 이용하여 빛을 적용하는 것에 대해 다뤄볼 예정입니다.
Phong Lighting Model link 퐁 조명 모델은 3가지 항을 통해 빛을 모델링합니다.
Diffuse Term Specular Term Ambient and Emissive Term 사실이 각각의 항은 모두 상식적인 선에서 이해가 가는 항목들입니다. 하나씩 보시죠.
Diffuse Term link물체이 특정 지점에 빛이 쬐어지면 그 점의 normal vector와 광선의 방향 사이의 각도에 따라서 그 지점이 보일지 안 보일지 정해질 것이고, 그 물체가 가진 색이나 표면 특성에 따라서 어떻게 보일지 정해질 것입니다.</description></item><item><title>Output merger</title><link>https://jukim2.github.io/docs/cs/graphics/output_merger/</link><pubDate>Mon, 08 Jul 2024 19:00:00 +0900</pubDate><guid>https://jukim2.github.io/docs/cs/graphics/output_merger/</guid><description>Output merger link Graphic rendering pipeline의 마지막 단계인 Output merger입니다. 여러가지 과정을 거쳐 픽셀에 texture와 light까지 입혔는데 어떤 단계가 남았는지 궁금하실 것입니다.
사실 Output merger는 많은 것이 있는 것은 아니고, Z-buffering과 alpha blending이라고 하는 실제로 화면에 송출할 색을 정하는 과정만 하면 끝입니다.
Z-buffering link 아래 그림과 같이 현재 viewport상에는 여러 물체들이 존재합니다. 그리고 그 물체들은 z축 앞뒤로 겹쳐있거나 할 수 있겠죠. 그렇게되면 더 앞에 있는 물체를 판별해서 실제 화면에 표시할 색을 정해야 합니다.</description></item></channel></rss>