일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- GeeksForGeeks
- directx
- 프로그래머스
- UnrealEngine5
- 언리얼엔진5
- 줄 세우기
- UnrealEngine4
- NRVO
- C
- RVO
- DeferredRendering
- baekjoon
- Frustum
- winapi
- UE5
- const
- softeer
- 팰린드롬 만들기
- C++
- Programmers
- algorithm
- 2294
- Unreal Engine5
- 백준
- 1563
- RootMotion
- 오블완
- DirectX11
- 티스토리챌린지
- IFileDialog
- Today
- Total
목록ComputerGraphics/DirectX (11)
Game Develop
여러 그림자 구현방법중, 깊이맵을 이용한 그림자구현 기법이다. 옛날에는 Circle Shadow, Projected Shadow Mapping 등을 사용했다고 하지만 요즘 하드웨어로 굳이 퀼리티가 떨어지는 기법을 사용할 필요가 없다. 제목처럼 깊이맵을 활용한 그림자매핑은 현재 상용엔진에서도 많이 적용하는 기법이다. 물론! 내가 지금 적용한건 제일 기초적인 그림자매핑이고, 실제로 상용엔진에서는 캐스케이드 그림자매핑이나 퍼센티지 클로저필터링 등 추가적인 최적화를 거친 기법을 사용한다. 깊이맵을 이용한 그림자매핑에 대한 설명은 사실 이미 잘나와있는것들이 굉장히 많아서... 나는 아래링크를 보고 구현해봤다. 다만 아래링크는 dx9이긴하지만 크게 상관은 없다. https://www.slideshare.net/Su..
현재 내 프로그램같은 경우 디퍼드렌더링을 사용하고 있다. 최소 4장(depth,diffuse,normal,specular)의 텍스쳐를 사용해서 최종적으로 출력할 픽셀값을 결정하게 되는데, 각각의 텍스쳐에 값을 기록하는건 GBuffer셰이더에서 하고, 이 텍스쳐를 사용해서 픽셀값 결정하는건 디퍼드셰이더에서 한다. 즉 디퍼드셰이더에서 라이팅연산까지 한 후에 출력하는건데, 문제는 컬라이더도 같이 빛연산이 적용되버려서 출력이 되던것이다. 알다시피 컬라이더는 실제 인게임에서 형태를 출력할일은 없을것이고 디버깅모드에서나 출력할텐데, 출력할때도 초록색 그대로 출력하지, 뭐 라이팅연산 적용해서 출력하진 않는다. 근데 다른 메쉬 렌더링하는것처럼 똑같이 디퍼드렌더링 시키니까 이 컬라이더들이 빛연산이 적용되서 출력이 되는 ..
1. D3D11 WARNING: ID3D11DeviceContext::OMSetRenderTargets: Resource being set to OM RenderTarget slot 0 is still bound on input! [ STATE_SETTING WARNING #9: DEVICE_OMSETRENDERTARGETS_HAZARD] 2. D3D11 WARNING: ID3D11DeviceContext::OMSetRenderTargets[AndUnorderedAccessViews]: Forcing CS shader resource slot 0 to NULL. [ STATE_SETTING WARNING #2097316: DEVICE_CSSETSHADERRESOURCES_HAZARD] 컬러피킹을 해야하기..
컬라이더세팅툴씬에서 컬라이더를 마우스피킹했을 경우 기즈모를 렌더시키고 싶기 때문에 구현해봤다.사실 기존의 반직선피킹을 하더라도 툴씬을 사용하는데에 지장을 줄정도로 프레임저하가 있을거 같진 않긴하다.당장은 컬라이더를 뭐 수십 수백개를 세팅(검사)할것도 아니니까..하지만 여기 말고도 다른 씬에서 사용할 수도 있고, 구현방법은 쉬우면서 효과는 좋기때문에 해봤다.분명 유용할것같긴하다. 픽셀단위로 정확한거치고는 프레임저하가 거의 없다. 다만 두번 그리는것이기 때문에 고해상도일수록 프레임 저하가 좀 더 있을것이다. 영상 이 방법은 예~전에 김포프님께서 올려주신 글을 보고 따라해봤다.(https://blog.popekim.com/ko/2012/12/03/fast-object-picking.html) 포프님께서도 툴..
디퍼드렌더링이 뭔지에 대한 자세한 글이 아니라 실제 코드에서 전체적인 자원이동 흐름이 어떤건지 정말 간략하게 정리해놓은 글이다. 디퍼드렌더링이 뭔지는 대충 검색하면 많이 나오지만, 실제 코드로써 자원정의와 흐름을 모르면 써먹을 수 없기 때문에 예제 보면서 코드 한줄한줄 이해했다. 개인적으로 RenderTarget부분을 제대로 공부안했어서 시간이 좀 걸렸었는데 어쨋든 이기회에 많이 공부해서 다행이다. cpp코드로 hlsl코드 보면서 메모장으로 막 정리한거라 다른사람이 보기에는 많이 불편할것같다. 디퍼드렌더링은 기존의 포워드렌더링의 라이트계산을 압도적으로 줄여놓은 라이팅 최적화기법이다. 포워드렌더링같은 경우 N*M의 라이트계산을 해야한다. 하나하나 일일이 해줘야한다는것. 디퍼드렌더링은 각 오브젝트들의 디퓨즈..
정확히는 현재 카메라의 절두체의 근평면(Near)과 원평면(Far)의 너비(Width), 높이(Height)를 구하는 과정이다. 포폴제작중에 프러스텀컬링이 어느영역만큼 컬링하고있는지 컬라이더를 이용해서 시각적으로 표현하고싶어서 관련 내용에 대해 공부를 했다. 편한이해를 위해 최종적으로 구하려는 결과물이 어떤것인지 먼저 보여주고 시작하겠다. - 구하려는 결과물 위와같은 절두체컬라이더를 만드려면 어떻게해야할까? 버텍스 찍어주는거자체는 그냥 근평면 찍어주고 원평면 찍어주고 이어주면 된다. 꼭짓점과 근평면 찍어주는거는 선택사항이니 알아서 하면된다. 버텍스는 아래와 같이 찍어야 할 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 void Frustum..
Normal Mapping 이란? 노멀 매핑(Normal Mapping)은 폴리곤의 법선 벡터(Normal Vector)의 값을 사용하여 로우 폴리곤의 그래픽 환경에서 하이 폴리곤의 입체감 및 질감을 구현하는 방법이다. 물체의 질감을 있는 그대로 폴리곤으로 표현하면 삼각형의 양이 많아지고 결국 연산이 많이 필요하게 되는데 폴리곤을 무척 적게 사용하고도 비슷한 효과를 낼 수 있는 기술이다. 90년대까지는 논문에서나 존재하던 기술이었으나 하드웨어의 속도가 빨라지고 프로그래머블 셰이더가 일반화되는 2000년대 중반부터 널리 사용되기 시작하였다. - 나무위키 - 정의에 대해서는 나무위키가 설명을 잘해놔서 복붙했다. 좀 더 설명을 덧붙이자면 기존에는 디퓨즈연산을 할 경우, 각 폴리곤의 법선벡터로만 라이팅 연산을 ..