전체 글
-
HTML 핵심 개념프론트엔드 공부/html 2024. 8. 28. 18:03
대학교 1학년때, 내가 좋아하는 예술을 다루면서 전공을 살릴 수 있는 분야에 대해 고민을 해보았다. 그러다가 프론트엔드에 대해 처음 알게 되었고 약간의 관심은 있었지만 학과 커리큘럼에 맞추어 학과 공부를 하는 것이 우선이 되어 프론트엔드 공부는 뒷전이었다. 대학교 2학년때, HTML과 CSS를 처음 접하며 간단한 코드 몇줄로 웹페이지를 꾸밀 수 있다는 것이 굉장히 신기하였고, 결과가 시각적으로 바로 보이는 것에 큰 매력을 느끼게 되었다. 따라서 프론트엔드 개발자가 되기 위한 첫 걸음인 HTML과 CSS 기초부터 본 블로그에서 다루고자 한다. * 본 글은 코드잇(Codeit)에서 학습한 내용을 정리한 것이다. 이번 포스팅에서는 HTML의 정의, 기초 문법과 구조, 다양한 태그들, 링크/폼/테이블/멀티미디..
-
GGP 12. Character Animation게임그래픽프로그래밍 2024. 6. 10. 10:50
Character Animation캐릭터의 애니메이션을 이해하기 위해, 먼저 캐릭터의 구조를 먼저 보자. Skeleton은 articulated body로, 움직일 수 있는 각도에 제한을 둔 것이다. bones(뼈대)와 joints(관절)로 구성되어 있는데, 애니메이션을 할 때 joint는 움직이지 않고, joint를 기준으로 bone이 회전한다. Character Mesh and Skeletonskeleton을 mesh에 할당하여 캐릭터 mesh를 쉽게 animate할 수 있다. Default pose(T자 포즈): 이 포즈로 애니메이팅을 시작한다. bind pose/rest pose라고도 불린다Skeleton Templates(b): 보통 skeleton은 템플릿의 형태로 미리 만들어져 주어진다. (..
-
GGP 11. Normal Mapping and Tessellation게임그래픽프로그래밍 2024. 6. 9. 01:49
Bumpy surfaces울퉁불퉁한 표면을 만드려면, 즉 디테일을 높이려면 high-resolution mesh가 필요하다. 그러나 high-resolution mesh는 CPU와 GPU 사이의 data bus에 옮겨야 할 데이터 수가 너무 많아서 bandwidth에 한계가 있다.이 문제를 해결하는 방법으로, low-resolution polygon mesh를 이용하고, 그럴듯한 image texture을 입히는 방법이 있다.그래도 여전히 low-resolution mesh는 bumpy features들을 잘 나타내지 못하는 한계가 있는데, 이것은 normal 때문이다. 위 사진을 보면, high-resolution mesh에서는 normal이 각기 다른 방향이지만, low-resolution mesh는..
-
GGP 10. Screen-space Object Manipulation게임그래픽프로그래밍 2024. 6. 8. 00:55
Object Picking우리가 스크린에서 클릭을 하였을 때, 어떤 object를 클릭한건지를 알아내는 과정이 필요하다. 우리가 클릭한 스크린 상의 좌표는 (xs,ys)이고, 이 좌표가 ray의 시작점 좌표가 된다 (xs, ys,0). ray는 z축 방향으로 쏘며 이 direction vector은 (0,0,1)방향이다. 우리가 찾아내야 될 것은, ray와 부딪힌 object이다. 그러나, screen-space의 정보로는 어떤 object의 픽셀인지를 알 수 없다. 따라서, screen-space에서 object-space로 전환하여 object spaces에서 intersection test를 수행해야 한다. Camera-space Raycamera-space의 ray의 시작점은 (xc, yc, n..
-
GGP 9. Euler transforms and quaternions게임그래픽프로그래밍 2024. 6. 7. 19:11
Euler Transforms오브젝트의 방향을 결정하는 방법을 Euler Transform이라고 하고, 회전각 ( Θ1, Θ2, Θ3) 을 Euler angles라고 한다. 세 개의 회전 축(X, Y, Z)을 따라 순차적으로 회전하는 각도로, 보통 Roll, Pitch, Yaw라고 불린다. 회전하는 순서에 따라 최종 방향이 달라진다. Euler Angles의 문제점euler angles은 직관적이고 사용하기 쉽지만, 치명적인 문제점이 있다.1.두 개의 keyframe사이의 euler rotations을 잘 interpolation하지 못한다.이때 keyframe이란, 1초에 몇십개의 frame들을 다 그리지 못하므로, 주요 frame몇개만 정의되는데, 이것을 keyframe이라고 한다. keyframe..
-
GGP 8. Output-Merging게임그래픽프로그래밍 2024. 6. 7. 10:42
Output-merger 단계는, pixel shader을 거친 결과가 최종적으로 렌더링 되는 단계이다. 이 단계에서는 Scissor Test, Depth-Stencil Test, Color Blending을 수행한다.output-merger(OM)단계는 픽셀들의 정보를 합쳐 어떻게 렌더링할까를 정한다. GPU Pipeline의 조합, render targets의 내용, depth/stencil buffers의 내용, pixel shader에 의해 생성된 pixel data들을 이용하여 최종 픽셀을 렌더링한다. Pipeline StateGPU input data를 어떻게 해석하고 process할지를 결정하는 하드웨어 세팅이다. rasterizer state, blend state, depth-stenc..
-
GGP 7. Lighting게임그래픽프로그래밍 2024. 6. 6. 19:12
rasterizer에 의해 생성된 per-pixel 속성들은 normal vector, texture coordinates 등을 포함한다. 이런 속성들을 이용해 pixel shader은 특정 operation을 수행하여 각 픽셀들의 색을 결정한다. 대표적으로 앞선 포스팅에서 다루었던 texturing과, 이번 포스팅에서 다룰 lighting이다. Phong Lighting ModelLighting(Illumination) 은 오브젝트와 빛 간의 상호작용을 다루는 기술이다. 가장 대표적인 lighting model로는 Phong model이있다. Phong model은 Diffuse, Specular, Ambient, Emissive으로 이루어져있다. Light Sourceslight sources에는 ..
-
GGP 6. Image Texturing게임그래픽프로그래밍 2024. 6. 1. 01:47
Pixel Shader 이번에는 GPU Pipeline 중 Pixel shader 단계에 대해 알아볼 것이다. Rasterizer에서 내부에 픽셀별로 normal vector, texture coordinates등의 속성들을 가지고 있었는데, 이런 속성들을 이용하여 Pixel shader은 각 픽셀의 색(Texturing, Lighting)을 결정한다.vertex에서 pixel로 바뀌면서 데이터 양이 엄청나게 늘어났는데, pixel shader은 병렬처리를 하기에 모두 동일한 처리를 하고, 자기 옆에 애가 뭐하는지는 모른다. Texture Coordinatesimage texturing은 많은 texturing 방법중에 가장 간단한 방법으로, 이미지를 object의 표면에 붙이는 방식이다. textur..