본문 바로가기

게임 공부/Computer graphics11

쿼터니언은 벡터로도 사용 가능 회전축과 회전각으로 쿼터니언을 만들면 이 쿼터니언은 해당 회전축으로 회전각만큼 회전시키는 용도로 사용할 수 있다. 또한 이 쿼터니언의 벡터 부분만 가져다 사용하면 크기만 다를뿐 회전축에 해당하는 벡터를 그대로 사용할 수 있다. 예를 들어 UpVector와 40도를 전달하여 쿼터니언을 만들었다면, 이 쿼터니언을 가시적으로 출력해보면 크기만 다를뿐 UpVector와 방향은 동일하다. 물론 이는 쿼터니언에 대한 제대로 된 이해가 되었다면 당연한 결과이다. 하지만 난 이해를 잘 못해서 고생했다.. 복잡하거나 어려운 개념을 보면 쉬운 개념까지 망각하거나 헷갈리게 된다. 다른 사람의 코드를 보다가 쿼터니언과 쿼터니언을 cross product하는 게 무슨 의미인지 궁금해서 실험해 보았다. 물론 쿼터니언을 잘 이해하.. 2021. 8. 19.
광선 추적(Ray Tracing)은 무엇인가? - (2) woo-dev.tistory.com/241 광선 추적(Ray Tracing)은 무엇인가? - (1) 광선 추적(Ray Tracing)은 가상적인 광선이 물체의 표면에서 반사되어, 카메라를 거쳐 다시 돌아오는 경로를 계산하는 것이다. 위키피디아에선 광선 추적을 위와 같이 설명하고 있다. 아래는 디 woo-dev.tistory.com 위 포스팅에 이어지는 글 틀린 부분이 있다면 알려주세요~ RT Core? RT Core는 RTX 시리즈의 그래픽 카드를 구성하는 Ray tracing을 위한 핵심 unit이다. 이전 포스팅에서 실시간 레이 트레이싱의 병목 지점은 트리를 Traversal하는 부분(교차 테스트가 이를 포함)이라 했다. 이를 CUDA같은 GPGPU 기법을 사용하더라도 SW로 구현되는 이상 한계가 있.. 2021. 4. 27.
광선 추적(Ray Tracing)은 무엇인가? - (1) 광선 추적(Ray Tracing)은 가상적인 광선이 물체의 표면에서 반사되어, 카메라를 거쳐 다시 돌아오는 경로를 계산하는 것이다. 위키피디아에선 광선 추적을 위와 같이 설명하고 있다. 아래는 디즈니 유튜브에서 가져온 광선 추적을 표현한 그림 광선 추적에 대해 알아보기 전에 간단하게 조명(lighting)에 대한 설명 게임 또는 컴퓨터 그래픽에서 현실 세계를 반영하기 위해 빼 놓을 수 없는 요소 중 하나가 조명(lighting)이다. 빛이라는 것은 크게 두 종류로 나뉜다. 태양이나 전구와 같은 광원이 방사하는 빛이 물체에 직접적으로 닿을 경우 이 빛을 직접광 혹은 직접 조명(Direct illumination)이라고 한다. 위의 그림을 예로 들면 4번 지점이 5번의 광원으로부터 받는 빛이 직접광이다. 그.. 2021. 4. 23.
조명(Lighting) 기초 youtu.be/Kuqm8Y3tUxY 시작하기 전에 위 영상을 한번 보고 시작하는 것도 좋다. Lighting (조명) 현실적인 3D 오브젝트를 표현하기 위해서 빛은 중요한 요소이다. 우리가 눈으로 볼 수 있는 물체들은 그 물체에 부딪힌 빛이 우리 눈에 반사되어 볼 수 있게 되는 것이다. 이러한 빛들은 태양 또는 전등과 같이 광원이 직접 방사하는 직접광과 물체, 먼지 등에 반사되어 생기는 간접광이 있다. 출처: https://kblog.popekim.com/2011/12/04-part-1.html 게임에서 오브젝트에 조명 효과를 주기 위해선, 오브젝트에 닿은 빛이 반사되어 카메라에 들어오는 빛의 세기(양)을 얻을 수 있어야 한다. 이러한 빛은 직접광일 수도, 간접광일 수도 있는데 직접광만을 고려하여 결과.. 2021. 3. 12.
5 - 출력 병합(Output merging) 책을 보며 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 자료 및 내용 출처 출력 병합(Output merging) 출력 병합 단계는 렌더링 파이프라인의 마지막 단계이다. 이전 단계인 프래그먼트 처리에서는 프래그먼트의 색상을 결정하여 RGB 값을 결과로 출력했다. 여기엔 사실 불투명도를 나타내는 알파(A), 깊이를 나타내는 Z 값도 포함되어 있다. 그래서 RGBAZ 프래그먼트로 부르기도 한다. 해당 단계에서는 프래그먼트별로 불투명도와 깊이를 추가로 비교하여 최종적으로 화면에 보일 프래그먼트를 생성한다. Z-버퍼링(Z-Buffering) 래스터화 단계에서 수행되는 Z-컬링을 이해하려면 Z-버퍼링을 알아야 한다고 했다. Z-버퍼링은 Z-버퍼(깊이 버퍼)를 이용한 일종의 알고리즘이다. 3차원 .. 2020. 8. 13.
4 - 프래그먼트 처리(Fragment processing) 책을 보며 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 자료 및 내용 출처 프래그먼트 처리 이전 단계인 래스터화 단계의 출력은 정점별 속성이 보간된 프래그먼트였다. 그리고 현재 단계인 프래그먼트 처리 단계는 프래그먼트 하나를 입력으로 받는다. 프래그먼트 처리는 프래그먼트 프로그램(셰이더)에 의해 수행되며, 다양한 처리를 통해 프래그먼트의 색상을 결정한다. 프래그먼트 처리 단계는 완전 프로그래밍 가능한 단계이기 때문에 우리가 직접 셰이더를 만든다. 셰이더의 출력은 색상을 나타내는 RGB값이다. 픽셀 셰이더는 프래그먼트 셰이더와 같은 의미로 사용되지만, 프래그먼트 셰이더가 더 정확한 단어이다. 프래그먼트 처리 단계에서 수행하는 중요한 2가지는 텍스쳐링(texturing)과 라이팅(light.. 2020. 8. 10.