목록전체 글 (54)
Visual Studio
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dwAevD/btrEJwFLYbA/MweXYUhIJkGPTN0VbTHytk/img.png)
Virtual Function 키워드 static binding(early binding) dynamic binding(late binding) v-table(virtual function table) override 키워드 주요 내용 1. virtual이면서 static 함수일 수 없다. 2. virtual이면서 다른 클래스의 friend일 수 있다. 3. 런타임 다형성을 위해 가상 함수는 기초 클래스의 포인터나 레퍼런스로 접근할 수 있다. 4. 상속된 클래스의 가상 함수 프로토타입 선언은 기초 클래스와 같아야 한다. 5. 가상 함수는 기초 클래스와 override한 상속된 클래스에서 항상 정의되어 있다. 상속된 클래스에서 꼭 override 하지 않아도 되지만 이 경우 함수 호출시 기초 클래스의 함수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b6v9SH/btrEzoob4dt/GGx431tw7XnombNcEoWME0/img.png)
DirectStorage는 DirectX12부터 추가된, CPU를 거치지 않고 GPU로 리소스를 로드할 수 있도록 하는 API이다. ID3D12Resource 인터페이스로 표현되는 모든 자원에 대해 적용 가능하다. 기존에는 병목 때문에 NVME SSD가 SATA SSD에 비해 게임에서 큰 성능 향상이 없었는데, 이를 이용하면 NVME SSD의 빠른 속도를 게임에서도 체감할 수 있게 된다. 기존의 리소스 로드 방식 DirectStorage를 이용한 리소스 로드 방식 기존에는 CPU에서 텍스쳐 등의 압축을 해제하는 방식이었지만 DirectStorage를 사용하면 CPU를 거치지 않고 GPU에서 decompression을 할 수 있다. 언리얼 엔진 5에서도 DirectStorage를 지원하면 좋을 것 같은데...
https://youtu.be/dffa5u44nGw?t=333 해당 튜토리얼 영상 5:33 쯤에 Inertia Tensor Scale에 대해서 설명한다. 스케일이 커질수록 각 축으로 회전시키기 더 어려워 진다고 한다. 이것을 이용하면 낮은 장애물에 부딪혔을때 날아서 미친듯이 도는 현상을 완화하는데 큰 도움이 된다. 그 유명한 볼트공중 말하는거 맞다...
13073번: Sums For each test case, print three space separated integers S1, S2, S3 in one line where S1 : the sum of first N positive integer, S2 : the sum of first N positive odd integer, S3 : the sum of first N positive even integer. www.acmicpc.net 각 테스트 케이스마다 주어지는 정수 N(1
4909번: Judging Olympia For years, a group of Regional Contest Directors (RCDs) of the ACM International Collegiate Programming Contest (ICPC) have been unsatisfied with the way contest submissions get ranked. The group sees it is academically wrong to emphasize the importance of www.acmicpc.net 영어 문제이다. 각 라인마다 1 이상 10 이하의 6개의 정수가 주어지는데,최댓값과 최솟값을 제외한 4개의 값의 평균을 구하는 쉬운 태스크이다. 종료조건은 0 0 0 0 0 0 이 입..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FNzaw/btrD3xFknF8/iwvUn7tEd4wTziOGh23BxK/img.jpg)
타원은 프로그래밍 가능한 Stage이고, 사각형은 프로그래밍 할 수 없는 고정 Stage이다. Tessellator Stage와 Rasterizer Stage, Output-Merger Stage는 프로그래머가 임의로 설정할 수 없다. Hull Shader Stage, Tessellator Stage, Domain Shader Stage는 DX11에서 새로 추가된, 하드웨어 테셀레이션을 위한 Stage이다. ( 관련 포스트: https://emacser.tistory.com/23 ) pipeline initialization 시에 Hull shader와 domain shader를 설정하지 않으면 테셀레이션도 수행되지 않는다. 이미지 출처 그래픽 파이프라인 - Win32 apps 이 섹션에서는 Direct..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ltYbt/btrD8N15xkn/QQy6uwSLCaqp1fcEKUAWK0/img.png)
최근에 테셀레이션이 궁금해져서 찾아봤는데, 쉽게 설명해주는 영상이 있어서 남겨 놓는다. DX11부터는 파이프라인에서 하드웨어 테셀레이션을 지원한다. Vertex Shader 과정이 끝나면 Hull Shader에서 폴리곤을 어떤 방식으로 분할할 지(Hull-Main Shader), 얼마나 분할할 지(Hull-Constant Shader) 결정한다. tessellation factor를 자유롭게 조절할 수 있는 것이 큰 장점인데, 이를 이용해 LOD(Level Of Detail)를 구현할 수 있다. 이에 대해서는 아래 포스트에서 자세히 설명하고 있다. [Snow Footprint] 02.Tessellator - 01 (Hull-Shader) 저번 포스팅에선 Wave Deformer 예시를 갖고 Deforme..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cnXCJI/btrD3QSoAOa/RKRXJBy80Y3vSkgdKbZbw0/img.png)
Tools로 가보자. Pipeline 탭과 비슷하지만 다른 창이 뜬다. 하단 Dr. PIX 탭에 Basic Information 이라고 되어있는 콤보 박스의 값을 바꾸면 여러 정보를 볼 수 있다. 아직 초심자라서 이걸 보고 유의미한 정보 수집을 하는 것은 힘들것 같다... 이제 Debug 탭으로 넘어가 보자. 주의: Pipeline 혹은 Tools에서 명령어를 선택해야 디버깅을 할 수 있다. DrawIndexedInstanced를 클릭하면 아래와 같이 컴파일된 쉐이더와 주석 처리된 쉐이더 정보를 볼 수 있다. debug mode로 빌드하여 debugging info를 포함하고 있는 프로그램은 원본 쉐이더 코드도 볼수 있다. visual studio와 똑같이 클릭해서 중단점을 만들고 멈춰가면서 디버깅할 수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/QMLtI/btrD2HBnPFA/EpEJ9DT07TAaZtPbz18xD1/img.png)
DirectX 하면서 쉐이더랑 파이프라인 디버깅을 하고싶어서 visual studio안에서 그래픽 디버깅 기능을 썼더니, deprecated 되었다면서 Microsoft PIX 라는 프로그램을 사용하라고 한다. 설치하고 실행하면 이런 화면이 뜨는데, 처음에는 사용법을 몰라서 약간 당황했다; 유니버셜 앱을 실행할 수도 있고, exe 파일을 실행할 수도 있고, 이미 실행중인 프로그램에 Attach 할수 있다. 분석을 시작하려면 디버깅할 프로그램에 연결한 뒤 "GPU Capture" 옆의 카메라 버튼을 누른다. Capture가 완료되면 이렇게 캡쳐된 스냅샷이 보이는데, 클릭하면 분석 창이 뜬다. 우측 하단 탭의 "Click here"를 누르면 분석을 시작한다. 분석이 완료되면 "Click here to sta..
FirstUnique coding task - Practice Coding - Codility Find the first unique number in a given sequence. app.codility.com A non-empty array A consisting of N integers is given. The unique number is the number that occurs exactly once in array A. For example, the following array A: A[0] = 4 A[1] = 10 A[2] = 5 A[3] = 4 A[4] = 2 A[5] = 10 contains two unique numbers (5 and 2). You should find the fir..