목록2020/01 (2)
Graphics Programming
UE4에서 프로젝트를 진행하면 이런저런 플러그인을 쓰게 된다. 엔진에 내장된 것도 있고, 구매하는 것도 있고, 직접 만드는 것도 있다. 플러그인의 소스 컨트롤을 메인 프로젝트의 소스 컨트롤과 묶어서 프로젝트 저장소에서 플러그인 수정도 관리하는 게 가장 직관적이고 관리하기도 편하다. 하지만 여러가지 이유로 다른 저장소를 파서 별도의 테스트 프로젝트에서 플러그인을 개발하고, 플러그인만 메인 프로젝트로 복사해올 수도 있다. UE4의 설계 의도상 어떤 프로젝트에 있는 플러그인 폴더만 복사해서 다른 프로젝트에 붙여넣어도 제대로 동작해야 한다. 그리고 이렇게 옮긴 플러그인이 제대로 작동해야 모듈화가 제대로 되어있다는 뜻이기도 하다. 프로젝트가 거대할 경우 이터레이션(컴파일/쿠킹/패키징/테스트 사이클)이 굉장히 길어..
한창 GPU 최적화를 알아볼 때 대충 이렇게 요약을 했었다. GPU에는 분기라는 게 없다. 둘 다 실행하고 참인 분기의 결과를 선택한다. 따라서 한 분기에 인스트럭션이 많으면 다른 분기에 인스트럭션이 적어도 길게 걸리는 쪽을 기다려야 한다. GPU의 셰이더 유닛은 매우 단순하다. GLSL이나 HLSL에서 정의한 함수도 모두 인라인화된다. CPU는 두 분기를 동시에 실행하고 한쪽이 참이면 다른쪽을 바로 취소한다. 인접한 픽셀들에 대한 셰이더들은 같은 분기를 타는 게 퍼포먼스에 좋다. 그런데 잘못 알고 있었나보다. https://www.quora.com/Why-dont-GPUs-have-branch-predictors 2017년 답변인데다 답변자가 엔비디아, 애플에서 GPU 컴파일러 엔지니어였다니 지금도 유..