전체 글 7

Texture compression

Application 을 구동하기 위해서 연산을 담당하는 CPU 외에 구동에 필요한 리소스를 저장하는 메모리인 RAM이 필요하다. 마찬가지로 GPU 또한 그래픽 연산을 위한 RAM을 가지고 있으며 이는 무한하지 않다. 게임 등에서 렌더링 퀄리티를 올리는 데 많은 요소가 있지만 그 중 눈에 확연히 띄는 것은 아마 texture일 것이다. 고해상도의 texture 를 사용할 수록 결과물의 선명도에서 큰 차이를 보일 것이다. 다만 언급했다싶이 RAM의 제한때문에 무한정 큰 texture 를 사용할 수 없고 render scene에서 샘플링되는 고해상도의 texture가 많다면 cache hit, memory bandwidth 등에서 성능 하락을 야기하며 심할 경우 RAM 부족으로 프로그램을 돌릴 수 없는 상황..

잡다 2021.01.12

Bitonic sort

Bitonic sort는 병렬 처리의 이점을 활용할 수 있는 sorting 알고리즘이다. 그림은 다소 복잡해보이나 몇 단계로 나눠 이해하면 크게 어렵지 않다. 먼저 파란색/초록색 블럭이 있는 열을 stage라고 명하며, 붉은색 블록이 있는 열은 pass라고 부른다. Stage는 파란색과 초록색의 블럭으로 이루어져있으며, 홀수의 블럭은 파란색, 짝수의 블럭은 초록색을 가진다. Pass의 개수가 stage의 번호가 될 것이다. 각 pass 에는 화살표가 있으며, 화살표의 시작점에 있는 수와 화살표가 가리키는 수를 비교하여 큰수와 작은 수를 비교하고 바꾸게 된다. 화살표는 파란색 stage에서는 내림차순, 초록색 stage에서는 오름차순으로 정렬된다. 화살표가 가르키는 거리는 gap이 되며, 1 items[i..

잡다 2020.12.22

Order Independent Transparency

Transparent 한 물체, 즉 투명 물체를 렌더링하는 것은 일반적인 렌더 파이프라인과는 조금 다르다. 보통 transparency를 표현하기 위해서는 alpha blend 를 사용하게 되며, alpha blend 의 기본 원리는 현재 draw attachment 의 color 와 fragment 의 color 를 blend function 을 이용하여 더하는 것이다. 만약 일반적인 렌더링과 같이 그린다고 가정하고, FBO clear -> draw transparent objects -> draw opaque objects 순으로 렌더링을 진행했다면, transparent obejcts 는 clear color 와 blending 될 것이며, 렌더링 결과물은 투명한 물체 뒤에 불투명한 물체가 그려진 ..

잡다 2020.12.03

Android Vulkan layer 적용

Android 에서 root 권한이 있다면 Vulkan layer를 debug 폴더에 넣고 바로 enable 시킬 수 있다. 그러나 root 권한을 가진 경우는 드물며 대부분 user 상황에서 진행을 하기 때문에 Vulkan layer를 사용하기 위해서는 선택지가 줄어 든다. 가장 먼저 필요한 일은 Vulakn layer library를 필요한 위치에 복사하는 것으로, 2가지 방법이 있을 수 있다. 1. Vulkan layer를 adb를 활용하여 복사하기 이 방법은 app이 debug 로 빌드되었을 경우에만 사용할 수 있다. $ adb push libVkLayer_object_tracker.so /data/local/tmp $ adb shell run-as com.example.myapp cp /data..

잡다 2020.11.18

Vulkan Layer

Windows 개발환경에서 Android를 위한 Vulkan layer 개발 1. Vulkan SDK 설치 vulkan.lunarg.com/sdk/home#windows Environment variable 설정 VULKAN_SDK Android SDK 설정 Android studio 설치 후, SDK 매니저로 SDK 설치 및 NDK 설치 Env. variable 설정 ANDROID_SDK NDK_ROOT Path 에도 등록 $VULKAN_SDK 의 LayerFactory 폴더를 복사하여 사용 LayerFactory 내에 Project 폴더를 layer 폴더로 수정 src 폴더 생성 layer_factory.cpp 파일 및 header파일을 layer 폴더로 넣기 interceptor_objects.h ..

잡다 2020.11.14