목록전체 글 (413)
Develog
2025년도 가을 무렵, 제 Github 계정에서 Page 기능을 이용해 블로그를 새로 개설하였는데, 이제 어느 정도 적응기를 마친 것 같습니다.데이터는 아직 갱신이 되지 않아 비어있긴 합니다만, 이번 기회에 블로그 이전을 결정하였습니다.향후 장기적으로 본 블로그에 업로드된 자료들 중, 너무 오래되어 도움이 되지 않는 자료는 폐기하고 장기적으로 남길 값어치가 있는 자료들만 따로 선별하여 신규 블로그에 업로드할 계획입니다.본 블로그는 더 이상 갱신되지 않지만 현재 상태 그대로 보존됩니다. 다만, 갱신 도중에 끊어진 자료는 새로운 블로그로 이전한 뒤 삭제할 예정입니다.포트폴리오를 겸하여 개인적으로 공부하면서 기록한 필기 자료를 남기기 위해 개설한 블로그였기 때문에 방문자 기록은 여태까지 일절 신경을 쓰지 않..
Shader Graph셰이더 그래프(Shader Graph)는 노드 기반으로 셰이더(Shader)를 제작할 수 있는 패키지.렌더 파이프라인(Render Pipeline)의 종류와 무관하게 사용할 수 있다.셰이더 그래프으로 제작한 에셋을 하나의 렌더 파이프라인에서 제작한 다음, 다른 렌더 파이프라인으로 옮기는 것이 이론상 가능은 하지만 호환성 문제가 있어 권장되지는 않는다. 가급적 셰이더 그래프를 작성하기 전에 렌더 파이프라인을 먼저 설정하는 것이 좋다.셰이더 그래프 에셋을 생성하면 아래와 같은 기본 설정값을 볼 수 있다.위 사진 속 Vertex, Fragment라고 적힌 2개의 박스는 각각 셰이더 스테이지(Shader Stage)를 의미한다.즉, 별다른 처리 없이 URP 셰이더 그래프를 처음 사용하게 된..
디스플레이 파이프라인 (Display Pipeline)3D 이미지를 컴퓨터가 생성하는 일련의 단계.표시할 객체들을 개별 모델에서 메모리로 불러온다. 수학적 함수를 적용해 모델들을 공통 좌표계(월드 뷰)로 변환한다. 카메라 시점에서 모델을 근사하는 다각형(삼각형)을 생성한다. 생성된 다각형들을 렌더링한다. 렌더링 된 모델에 텍스처를 적용하여 이미지를 생성한다. 결과 이미지에 특수 효과를 결합하여 프레임버퍼로 이동시킨다. GPU가 프레임버퍼에 도착한 데이터를 바탕으로 이미지를 생성한다.위와 같은 각 단계는 진행될수록 더 많은 메모리와 대역폭, 연산 속도를 요구한다. 이는 GPU가 많은 발열과 전력, 높은 대역폭 및 고성능 비디오 메모리 등을 요구하는 이유와도 연결된다.타일 렌더링 (Tile Rendering..
보틀넥 문제 (Bottle neck)GPU가 연산하는데 필요한 모든 소스 데이터는 CPU를 통해 가져와야 한다.(정점 좌표, 면의 순서, 광원 좌표 등)컴퓨터는 기본적으로 CPU, GPU, DRAM 등 다양한 역할을 담당하는 부품이 모여서 구성된 복합체다. 이 때문에 특정 부품의 성능이 다른 부품의 성능보다 상대적으로 떨어진다면 병목 현상이 발생해 전체적인 성능이 떨어질 수밖에 없다.즉, 컴퓨터의 전체 성능은 여러 부품 중에서 가장 느린 성능을 지닌 부품의 속도에 맞게 결정된다. GPU의 경우, 연산에 필요한 데이터를 비디오 메모리에서 가져오는 단계에서 성능이 떨어지는 상황이 흔히 발생한다.그 중에서도 텍스처는 가장 흔히 보틀넥 문제를 일으키는 요소로 지목된다. 용량이 너무 큰 텍스처 데이터를 한꺼번에 ..
CPU와 GPUCPU는 복잡한 연산의 순차 처리에 특화되어 있는 유닛(Unit)이지만, GPU는 단순한 연산의 병렬 처리에 특화되어 있는 유닛이다. 이러한 구조적인 차이 때문에 CPU에서 픽셀 단위의 연산을 처리한다면, 픽셀의 수만큼 엄청난 양의 연산을 순차적으로 반복해야 한다. (1920 * 1080 = 2,073,600번)(참고: https://youtu.be/ZrJeYFxpUyQ?si=rDr9yryrzvMwzwa8)드로우 콜 (Draw Call)복잡한 처리를 CPU가 먼저 처리한 다음, GPU에 '완벽하게 준비된 데이터'만 전달하여 빠른 속도로 계산만 진행한다. 이때, CPU가 GPU에게 '그리기' 명령을 내리는 것을 드로우 콜(Draw Call)이라고 부른다.드로우 콜을 받은 GPU는 CPU에서 ..
1. 문자열Python은 문자열을 다룰 때 정말 강력한 성능을 발휘하는 언어 중 하나입니다.문자열을 자르고, 붙이고, 곱하고, 더하는 등 직관적이고 사고공학적(?)인 구조를 지니고 있어 유연하게 활용할 수 있습니다.문자열을 가공할 때는 물론, 문자열을 출력할 때도 이러한 Python의 장점이 발휘됩니다.repr( )과 str( )이 그것입니다. 2. repr( )문자열로 객체를 다시 생성하고자 할 때 사용됩니다.import datetimea = datetime.datetime(2017, 9, 27)str(a)>>> '2017-09-27 00:00:00'a = datetime.datetime(2017, 9, 27)repr(a)>>> 'datetime.datetime(2017, 9, 27, 0, 0)'문자..
1. C++ 진짜 싫다아니 대체 이런 언어를 왜 쓰는 거죠.프레임워크를 설치하든, 코드를 짜든, 문법 배운 거 실습을 하든 도통 뭘 하든 간에 제대로 돌아가는 꼴을 못 봤습니다.버전은 어마어마하고, 책임은 몽땅 프로그래머한테 떠넘기고, OS마다 컴파일러마다 파편화는 아찔한 수준이고, 패키지든 프레임워크든 뭐 하나 설치만 하면 에러부터 뿜어대고...Catch2요?아니 유닛 테스트를 위해서 쓸 수 있는 좋은 프레임워크라고 소개하면 뭐 합니까, 설치해서 쓸려고 해도 에러만 토해내는데!초보자 입장인 저에게는 C++이 너무나도 싫습니다. 문법 괴팍하다고 한동한 멀리하던 Python이 선녀로 보이는 수준입니다.아니 패키지 설치하라고 할 때마다, 새로운 문법을 하나씩 배울 때마다 늘 새롭고 재밌지가 않아요. 겁부터 ..
1. 가정법 과거완료과거의 일은 미련이 남기 마련입니다. "그때 조금만 더 ~를 했다면 ~했을 텐데!"처럼요.사실 지난 일을 되돌리는 건 불가능합니다. 하지만 묘사는 가능하죠.가정법 표현은 이러한 경우에 주로 사용됩니다.현재 벌어진 결과에 대해 아쉬움과 미련 등을 묘사하기 위해 특정 조건을 가정하여 말합니다."과거에 있었던 일에 대해 그보다 더 과거가 되는 시점에서 '무언가'를 행한다면 달라졌을 텐데!"라는 표현을 사용할 때는 가정법 과거완료를 사용합니다.여기서 독특하게도, 조건(IF)과 결과(Result)의 순서를 바꾸는 것도 가능합니다.If I hadn't been ill, I would have gone to the party.I would have gone to the party if I hadn..