성댕쓰 똑똑한 생활

고정 헤더 영역

글 제목

메뉴 레이어

성댕쓰 똑똑한 생활

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (172)
    • 똑똑한 재테크 (1)
      • 올웨더 자산배분 (1)
    • 똑똑한 개발 (170)
      • Hazel 게임엔진개발 (0)
      • Algorithm 과 Data Structure (51)
      • C++ (18)
      • C# (8)
      • 개발로그 (0)
      • Image Processing (2)
      • C++ 게임개발 (60)
      • 컴퓨터 그래픽스 (10)
      • 수학 (13)
      • 영어 (8)

검색 레이어

성댕쓰 똑똑한 생활

검색 영역

컨텐츠 검색

똑똑한 개발/컴퓨터 그래픽스

  • Rasterization: a Practical Implementation Improving the Rasterization Algorithm

    2022.03.16 by 성댕쓰

  • Rasterization: a Practical Implementation Perspective Correct Interpolation and Vertex Attributes

    2022.03.15 by 성댕쓰

  • Rasterization: a Practical Implementation Visibility Problem the Depth Buffer Algorithm and Depth Interpolation

    2022.03.15 by 성댕쓰

  • Rasterization: a Practical Implementation The Rasterization Stage

    2022.03.09 by 성댕쓰

  • Rasterization: a Practical Implementation The projection stage

    2022.03.07 by 성댕쓰

  • Rasterization: a Practical Implementation Rasterization Algorithm Overview

    2022.03.07 by 성댕쓰

  • Visibility problem

    2022.03.06 by 성댕쓰

  • Perspective projection

    2022.03.04 by 성댕쓰

  • Rendering 프로세스 이해하기

    2022.03.02 by 성댕쓰

  • 3D Scene의 구성 요소

    2022.03.02 by 성댕쓰

Rasterization: a Practical Implementation Improving the Rasterization Algorithm

Rasterization을 최적화하는 몇 가지 기술을 소개한다. Aliasing and Anti-Aliasing 삼각형을 확대해보면 모서리에 계단 모양의 패턴이 나타난다. 이를 jaggies라고 한다. rasterization하면서 연속적인 공간을 불연속적인 공간(픽셀)로 바꾸면서 나타난 결과이다. 픽셀당 1개의 sample을 render하는 대신, 여러개의 sub pixel로 쪼개 coverage test를 하는 방법으로 이러한 문제를 해결할 수 있다. sub pixel로 쪼개놓은 pixel의 최종 color는 sub pixel color를 그 숫자로 나눈 값이 된다. 예를 들어 삼각형이 하얀색이고 4개의 sample 중 2개만 삼각형에 overlap한다면 최종 color는 (0+0+1+1)/4=0.5..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 16. 18:36

Rasterization: a Practical Implementation Perspective Correct Interpolation and Vertex Attributes

Perspective Correct Vertex Attribute Interpolation barycentric coordinate으로 vertex attribute도 interpolation할 수 있다. 이전 글에서 설명한 것처럼 depth coordinate은 z coordinate의 역수로 barycentric coordinates을 이용, interpolation하여 찾을 수 있다. 이를 vertex attribute에도 적용 할 수 있다. 대표적인 vertex attribute는 color와 texture, normal 이 있다. texture coordinate은 2차원 coordinate으로 texturing에 사용한다. normal은 shading에 사용하고 물체의 방향을 정의한다. ras..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 15. 22:38

Rasterization: a Practical Implementation Visibility Problem the Depth Buffer Algorithm and Depth Interpolation

Depth Buffer Algorithm visibility problem을 해결하기 위해 삼각형을 Depth로 정렬하고 카메라와 더 가까운 삼각형을 그릴 수 있다. 하지만 이 방법은 충분하지 않다. 위 그림에서 보는 것처럼 삼각형이 서로 겹쳐 있으면 정확한 그림을 그릴 수 없다. (P3, P4) 이 문제를 해결하는 방법 중 하나는 depth buffer(z buffer)를 이용하는 것이다. depth buffer는 frame buffer와 같은 사이즈의 2d array이고 그 값은 depth를 갖는다. depth buffer를 만드는 방법은 아래와 같다. 1. depth buffer를 아주 큰 숫자로 채운다. 2. pixel이 overlap하는 삼각형 점의 depth를 구한다. 3. depth buff..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 15. 14:47

Rasterization: a Practical Implementation The Rasterization Stage

camera space에 물체를 raster space로 projection 한 이후, 이번에 해결할 문제는 아래와 같다. - triangle과 겹치는 픽셀을 찾아야 함. - 겹치는 픽셀에 어떤 색을 세팅할 지 결정해야 함. 위 두 가지의 문제를 해결하기 위해 우리는 아래의 방법을 이용한다. - edge function - barycentric cordinates Edge Function triangle과 겹치는 픽셀을 찾는 많은 알고리즘이 있다. edge function은 그 중 하나이다. 삼각형의 한 변을 연장하면 2d space를 2개로 나눌 수 있다. edge function은 2개로 나눈 space중 왼쪽 좌표값을 넣으면 음수값을 반환하고, 오른쪽 좌표값을 넣으면 양수 값을 반환, 선 위에 있으..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 9. 20:11

Rasterization: a Practical Implementation The projection stage

다음은 rasterization을 간단히 요약한 pseudo 코드이다. // project v2 Vec3f v2screen; v2screen.x = near * v2camera.x / -v2camera.z; v2screen.y = near * v2camera.y / -v2camera.z; v2screen.z = -v2cam.z; Vec3f v1screen; v1screen.x = near * v1camera.x / -v1camera.z; v1screen.y = near * v1camera.y / -v1camera.z; v1screen.z = -v1camera.z; // If the two vertices have the same coordinates in the image then compare thei..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 7. 22:48

Rasterization: a Practical Implementation Rasterization Algorithm Overview

Rasterization은 두 개의 step으로 나눌 수 있다. 첫 번째, 3d vertices를 perspective projection을 이용하여 screen에 project한다. 두 번째, image의 모든 픽셀을 순회하면서 픽셀이 project된 도형에 속해있는지 확인한다. rasterizaion 알고리즘은 object centric이다. scene에서 시작하기 때문이다. pseudo code로 간단히 구현해보자. // rasterization algorithm for (each triangle in scene) { // STEP 1: project vertices of the triangle using perspective projection Vec2f v0 = perspectiveProject..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 7. 21:48

Visibility problem

canvas에 물체를 그릴 때 어떤 부분은 보이게 하고 어떤 부분은 감춰야 하는지 결정하는 방법을 알아보자. 다음의 두 가지 방법이 있다. - ray tracing - rasterization raterization은 ray tracing보다 빠르지만 실제 이미지처럼 render하는 더 쉬운 방법은 ray tracing이다. rasterization 방법에 대해 알아보자. 실제 물체 점을 canvas에 projection 한 점의 원래 좌표체계를 screen space라고 한다. canvas 중앙에 원점이 위치한다. 모든 좌표축의 길이는 unit length 인 1이다. 점이 y축 왼쪽에 있거나 x축 아래에 있으면 음의 값을 갖는다. 그리드 형태의 좌표로 원점이 왼쪽 위에 위치한 좌표체계를 raster ..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 6. 21:09

Perspective projection

perspective projection은 우리 눈이 실제 세계를 보는 것과 같은 방식으로 canvas에 3D 물체를 그리는 방법이다. 실제 물체의 꼭지점과 우리 눈을 잇는 직선을 그리고 그 사이에 있는 canvas와 만나는 점을 찾는다. 이 점을 이어 wire frame을 얻을 수 있다. 실제 물체와 눈 사이의 거리가 멀어질수록 canvas에 그린 그림은 더 작아진다. 이를 foreshortening이라고 한다. perspective projection에는 두 가지 중요한 가정이 있다. 첫째, eye는 canvas의 정중앙에 있다. 둘째, canvas의 크기는 변할 수 있다. canvas의 꼭지점과 eye를 직선으로 이으면 생기는 피라미드를 frustrum이라고 부른다. 물체에 까지 직선을 연장하면 v..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 4. 22:25

Rendering 프로세스 이해하기

크게 2 개의 파트가 3D 화면 Rendering 프로세스를 구성한다. - perspective projection과 visibility problem - light transport와 shading 위 그림처럼 3차원 물체의 꼭지점과 우리 눈까지의 직선을 그엇을 때 canvas위에 한 점과 만난다. 이렇게 만난 점을 이으면 어떤 물체를 canvas 위에 그릴 수 있다. 이러한 작업을 perspective projection이라고 한다. perspective projection만 했을 때 물체의 어떤 부분이 보이고 어떤 부분은 안보이는지 알 수 없다. 어떤 부분을 안보이게 처리하고 보이게 처리할 건지 계산하는 것을 visibility problem이라고 한다. visibility problem을 해결하기..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 2. 22:45

3D Scene의 구성 요소

3차원 화면을 구성하는 세 가지 요소가 있다. - 물체 - 빛 - 카메라 그 중 물체를 표현하는 단위로 쓸 수 있는 여러가지 방법이 있다. 주로 쓰는 방법은 삼각형을 이용하여 물체를 표현하는 것이다. 다수의 삼각형을 붙이는 방법으로 복잡하거나 굴곡있는 형태를 표현할 수 있다. Sampling은 물체를 표현하기 위해 물체를 대표하는 점 또는 삼각형을 뽑는 것을 의미한다. 예를 들어 굴곡있는 선을 그릴 때 해당 선 위의 몇몇 점을 골라 직선으로 이어 굴곡에 가깝게 표현할 수 있다. 이때 점을 고르는 행위가 Sampling이다. 삼각형을 이용하면 물체를 근사값으로 표현할 수 있지만 정확히 표현할 수는 없다. NURBS 나 sub division같은 방법은 이런 문제를 해결하기 위한 방법이다. 이러한 방법이 삼..

똑똑한 개발/컴퓨터 그래픽스 2022. 3. 2. 21:41

추가 정보

인기글

최신글

페이징

이전
1
다음
TISTORY
성댕쓰 똑똑한 생활 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바