Surface book Windows 10 th2 클린 인스톨 후기

서피스북 처음 구입하면 현재 최신 빌드인 th2 (10586 1511)빌드가 아닌 그냥 th1(10586)빌드가 설치되어있습니다. 구입하자마자 엄청나게 업데이트 시간을 들여서 th2로 넘어가게 되는데요. 이게 영 찝찝하죠. 요새 소소한 문제들이 있어서…앞의 찝찝함도 있고, 혹시나 몇 가지 문제는 해결되지 않을까 하여 결국 클린 인스톨을 결심했습니다. 클린인스톨 방법은 서피스프로 제품들과 기본적으로 동일합니다. 1. 최신 Windows 10 빌드를 넣은 부팅 가능한 … More Surface book Windows 10 th2 클린 인스톨 후기

D3D12엔진개발 – PipelineState 조합(폭발) 처리

D3D12렌더러 개발을 시작하면서 한번 언급했던 내용이다. PipelineState폭발. D3D12에선 Render State의 각 항목들을 개별적으로 바꿀 방법이 없다. 무슨 소린고 하니 A라는 VertexShader를 사용해서 렌더링했다가 모든 Render State를 그대로 유지한 상태에서 B라는 VertexShader로 바꿔서 렌더링하고 싶다…이런거 불가능하다. 알파블랜딩 상태도 마찬가지이고 Z-Write를 끌지 켤지, Z-Test를 할지 말지도 마찬가지다. 이 모든 상태들은 ID3D12PipelineState객체 한개로 묶어서 처리된다. D3D12_GRAPHICS_PIPELINE_STATE_DESC구조체 각 상태들을 설정해서 ID3D12PipelineState객체를 … More D3D12엔진개발 – PipelineState 조합(폭발) 처리

D3D12엔진개발 – Light Map Object를 위한 Texture Update

절대로 움직이지 않는 static한 오브젝트들은 Light Map을 사용한다. Graphics API를 사용하는 계층 말고 그 위의 상위 계층에서 Light Map의 좌표를 부여하고 각 Texel의 광도를 계산한다. 렌더러에서는 이미지 데이타로 받아서 Light Map Texture를 생성하고 렌더링할 뿐이다. 따라서 D3D11 -> D3D12로 전환되어도 Light Map처리 자체가 바뀌진 않는다. D3D Resource로서의 Light Texture 다루는 방법만 바뀔 뿐. Light Texture는 … More D3D12엔진개발 – Light Map Object를 위한 Texture Update

win32 or UWP에서 인터넷에 연결된 적절한 IP가져오기

요새는 머신에 여러개의 네트워크 장치가 붙어있다. 랜카드가 여러개인 경우도 있고, 그렇지 않더라도 VM등 가상 네트워크 디바이스가 여러개 존재하는 경우가 대부분이다. 따라서 어플리케이션이 접속을 받아야하는 경우에 어느 네트워크 장치의 IP에 bind해야할지 난감할때가 많다. 그래서 이럴때 사용할 코드를 작성했다. win32의 경우는 dns주소와 gateway가 설정된 경우를 찾아서 인터넷에 접속한걸로 간주한다. UWP의 경우 NetworkInformation::GetInternetConnectionProfile()로 인터넷에 연결된 네트워크 장치를 찾는다. … More win32 or UWP에서 인터넷에 연결된 적절한 IP가져오기

D3D12엔진개발 – ID3D12PipelineState폭발…

D3D12에선 온갖 렌더링 스테이트를 묶어서 ID3D12PipelineState객체 하나로 만들어둠. 렌더링하면서 렌더 스테이트를 중간에 바꿀수 있는 API가 아예 존재하지 않음. 오직 ID3D12PipelineState객체만 바꿔가면서 렌더링 할 수 있음. 이게 쉐이더 폭발보다 더 무서움. [ 알파블랜딩 경우의 수 x 쉐이더 조합의 경우의 수 x 기타(양면 렌더링 여부, Depth Enable, Depth Write여부 등등) ] 변수가 더 있을텐데 이 정도만 해도 … More D3D12엔진개발 – ID3D12PipelineState폭발…

D3D12엔진 개발 – D3D11엔진과의 성능비교

  이 날을 기다렸다. 실제로 정말 더 빠른지를 테스트해보고 싶었다. 일단 데스크탑의 경우 최대 프레임이 D3D12버전보다 D3D11쪽이 두배 정도 나왔다. 이건 상당히 아쉬운 부분인데 그냥 화면 클리어만 해도 D3D11보단 무조건 느리다. 데스크탑에서 D3D11버전이 1400프레임 정도 나올때 D3D12버전은 800프레임 정도다. 뭔가 드라이버쪽에서 개선해줄 필요가 있을것 같다. 노트북GPU에선 일단 D3D12쪽이 빠르다. GTX980M이 장착된 에일리언웨어 노트북에서 테스트했을때 D3D12버전쪽이 … More D3D12엔진 개발 – D3D11엔진과의 성능비교

D3D12엔진 개발 – Dynamic VertexBuffer 사용

Voxel Horizon데모를 D3D12엔진으로 돌아가게 만들었다. 데모에서 바닥과 블럭 렌더링은 Dynamic VertexBuffer를 사용한다. D3D11에선 Map(), Unmap()을 사용해서 하나의 VertexBuffer에 Update하고 Draw..(), 또 Update하고 Draw..()하면 되었다. D3D11이라고 해서 Draw..()한다고 즉시 렌더링이 이루어지진 않는데 Resource Renaming이란 방법으로 해결하고 있다. D3D12에선 이런거 없다. 게다가 CommandList를 이욯하기 때문에 Execute()하는 시점까진 Draw…()에 사용될 VertexBuffer의 내용이 그대로 유지되어야한다. 우선 Vertex Buffer는 다음과 … More D3D12엔진 개발 – Dynamic VertexBuffer 사용