전체 글

컴공과 학부생의 이야기
·Riley-Engine
Vertex Shader는 정상작동하는 것을 확인할 수 있지만, pixel shader는 did not run이라는 문구와 함께 디버깅도 하지 못하는 경우가 있을 것이다. 이는 프로그램 자체에서 쉐이더가 돌아갈 필요가 없다고 판단하여 작동하지 않는 경우이다. 대표적으로 몇가지 케이스가 있다.1. early depth test2. 완전 엉뚱한데 그리는 경우 1. depth 값이 카메라에 잡히지 않는 곳에 있으면서 생기는 문제이다. 이는 pixel shader에서 SV_DEPTH를 통해 값을 억지로 부여해서 확인해 보는 방법도 있다. 2. 내가 경험한 경우는 2번 케이스였다. 쉐이더로 보내는 cbuffer 값들이 전혀 설정이 되지 않아 IA에서는 모양이 제대로 잡혔지만, VS에서 값을 변환하면서 아에 사라져..
·C++
void func(int& x){ x = 20;}int main(){ int a = 0; func(a); // a = 20}void func(int* px){ *px = 20;}int main(){ int a = 0; func(&a); // a = 20} &(reference)참조 변수 x는 main의 a 변수의 별명이 되어 a의 메모리를 공유하게 된다. 즉, 서로 부르는 이름만 다를 뿐이지 같은 주소를 공유한다. *(pointer)px는 int*로 포인터 타입이다. 해당 타입은 지역변수이자 매개변수이다.참조와 다른 큰 특징은 px는 a와 주소가 다르다는 것이다. *px와 *a가 가르키는 값은 같다. 다만, px와 a의 주소는 다르다는 이야기이다.
·Graphics
참고https://www.yes24.com/Product/Goods/24301920https://learnopengl.com/Advanced-Lighting/SSAOSSAO이름에서 알 수 있듯이, 포스트 프로세싱 과정 중 하나이다. 이전에 Ambient Lighting에 대해서 공부하였고 해당 라이팅은 고정된 빛에서 빛이 산란됨에 따라 장면이 그려지는 것을 표현한 것이다. 간접적인 라이팅의 한 종류를 Ambient occlusion이라고 부른다. 이러한 종류의 간접 라이팅은 서로가 밀접하게 붙어있기 때문에 더 어둡게 보인다는 특징이 있다. Crytek 발표자표2007년에 Crytek에서 발표한 기술로 depth buffer를 screen-space에서 이용해 occlusion의 크기를 결정한다. 이론은 ..
Koala Jung
koala-tech-blog