본문 바로가기

프로그래밍/Shader

(13)
Bloom 이론 Bloom : HDR에서 비디오카메라를 구현할 때 현실감을 주기 위해 흔히 쓰이는 PostEffect이다. 아주 밝은 픽셀에서 주변의 어두운 픽셀 쪽으로 빛을 흘리는 것 -> 매우 밝은 픽셀에서 빛이 새어나오는 현상이다. 평균 휘도(Luminance)를 통해 각 픽셀이 주변 픽셀에 얼마나 빛을 흘리는지 계산해야 하므로, HDR 렌더링이 필수적이다.LDR 값에서 Bloom을 시도하면 마치 그을린 것처럼 빛이 떠버리는 현상이 발생한다 Bloom 처리 과정 HDR 텍스처를 1/16로 다운스케일함으로써 시작된다 다운스케일 하는 이유메모리를 덜 사용할 수 있다.픽셀 수를 줄임으로써 속도가 더 빨라진다풀 해상도에서 사용하면 업스케일 덕분에 블러링 과정에서 추가적으로 성능 향상이 있다.다운스케일된 이미지는 다른 Ef..
HDR 이론 포스트 프로세싱 : 조명이 적용된 3D 씬에 2D 이펙트를 적용해 화면에 최종적으로 출력되는 이미지를 개선하는 작업 LDR (Low Dynamic Range) 렌더링 : 8비트 채널 텍스처, 모든 출력 값이 0 ~ 1 사이의 범위로 고정된다 Saturation : 값을 0 ~ 1로 고정해주는 Clamp 역할 밝은 씬에 조명을 비추면 저장해야 하는 조명 값은 LDR의 최대값인 1을 넘어서게 된다. 고정 범위 때문에 밝은 부분의 디테일은 날아가게 된다. LDR 텍스처의 저장 범위가 포화되기 때문이다.마찬가지로 어두운 씬은 낮은 값에서 동일한 효과를 일으킨다 휘도 (Luminance) : 특정 방향에서 표면으로부터의 단위지역당 빛의 정도. 색의 밝고 어두운 정도를 말한다. 톤 매핑 (Tone Mapping) ..
Compute Shader_3 책에는 계산 셰이더 파이프라인에 관한 내용만 있고 실제 쓰는 방법은 나와있지 않아서 지금 작업하고 있는 프레임워크에 적용하는 방법을 좀 찾아봐야겠다 스레드의 동기화 1. Memery Barrier 하나의 스레드 그룹 안의 스레드들에 대한 동기화 두 가지 속성에 의해 나뉜다동기화의 대상이 되는 메모리의 종류 : GSM에 대한 동기화를 유발하는 함수가 있고, Device Memory에 대한 동기화를 유발하는 함수도 있으며, 그 둘 다에 대한 동기화를 유발하는 함수도 있다.그룹 동기화 여부 : 주어진 스레드 그룹의 다른 모든 스레드가 동일한 동기화 지점에 도달할 때까지 기다릴 것인지의 여부 GroupMemoryBarrer() : 스레드 그룹의 스레드들이 GSM Write가 모두 완료될 때까지 현재 스레드의 실..
Compute Shader_2 numthreads: 한 그룹당 인스턴스화될 스레드들의 개수를 지정한다 ex) [numthreads(10, 10, 2)]x, y가 1 이상이어야 하고 z는 반드시 [1,64]이어야 한다. 그룹의 전체 스레드 개수(x*y*z)가 1024를 넘으면 안된다 dispatch 호출에서 인스턴스화되는 스레드들의 배치 구조는 다수의 스레드가 일렬로 배치되어 있는 형태가 아니다.스레드 그룹 index를 일차적인 좌표로 삼고, 개별 스레드에 접근할 수 있는 입체적인 형태이다 SV_GroupID : dispatch 호출의 스레드 그룹들 중 현재 스레드가 속한 그룹의 3차원 식별자(uint3) SV_GroupThreadID : 그 스레드 그룹 안에서의 현재 스레드의 3차원 식별자(uint3) SV_DispatchThread..
Compute Shader_1 현재 Practical Rendering and Computation with Direct3D 11 를 읽는 중이다..책은 번역본을 사서 읽고 있는데 광이형이 워낙 번역을 정직하게 해놓으셔서 한국어로 보고 있지만 다시 해석을 하는 경우가 있다또 한글로 번역하는 과정에서 애매하게 설명이 되어 있는 건 원서로 찾아가며 보는 중이다밑줄치면서 읽기만 하면 머리 속에 기억이 잘 안남아서 나름대로 정리한다 계산 셰이더 (DirectCompute) : GPU의 계산 능력을 렌더링 이외의 알고리즘에도 사용하기 위한 좀 더 자연스럽고 유연한 처리 환경을 제공한다GPU는 병렬로 작동하는 아주 많은 수의 소규모 처리기들로 이루어져 있기 때문에 크게 병렬화할 수 있는 계산에 아주 적합하다 DirectCompute의 장점 : ..