Graphics/Graphics Study 자료
-
Shadow Volume (Stencil Shadow) - 구현 (2/2)Graphics/Graphics Study 자료 2020. 5. 5. 08:10
Shadow Volume (Stencil Shadow) - 2 최초작성 : 2020-05-05 마지막수정 : 2020-05-05 최재호 목표 Shadow Volume (Stencil Shadow) - 1 에서 봤던 Shadow Volume 생성과 Shadow 판정 알고리즘을 활용하여 실제 Shadow Volume 그림자를 구현해봅니다. CPU와 GPU 구현 방식 둘다 알아볼 것이며, Shadow 판정 알고리즘은 Depth fail을 사용합니다. 구현 1. CPU 에서 구현 1.1 Vertex 인접 정보 생성 1.1.1 jVertexAdjacency 의 GenerateVertexAdjacencyInfo를 사용하여 Vertex의 인접정보를 생성합니다. 1). 이 함수는 Vertices와 Indices 정보를..
-
Shadow Volume (Stencil Shadow) - 원리 (1/2)Graphics/Graphics Study 자료 2020. 4. 29. 19:55
Shadow Volume (Stencil Shadow) 최초작성 : 2020-04-29 마지막수정 : 2020-04-30 최재호 목표 Shadow Volume을 이해하고 구현 합니다. 내용이 많아서 알고리즘/구현 부분으로 분리하여 설명 할 것입니다. 이 장은 Shadow Volume 생성과 Shadow 판정 알고리즘을 다룹니다. 개요 Shadow Volume 은 이름처럼 Shadow caster와 Light 방향을 기준으로 Shadow volume 을 만들어 Shadow 를 만듭니다. Shadow volume 내부에 있는 경우 Shadow 를 받고, 그렇지 않은 경우 Shadow 를 받지 않습니다. 이러한 처리를 위해서 Stencil buffer를 활용합니다. Shadow Volume 은 기존의 다른 S..
-
Exponential Shadow Map(ESM)Graphics/Graphics Study 자료 2020. 4. 23. 21:57
Exponential Shadow Map(ESM) 최초작성 : 2020-04-23 마지막수정 : 2020-04-23 최재호 목표 ESM Shadow 에 대해 알아보고 실제 구현해봅니다. 개요 Standard shadow map 의 Shadow edge를 부드럽게 처리할 수 있는 기법 중 하나입니다. 구현방법도 VSM보다 간단하고, ShadowMap으로 R32 텍스쳐만 있으면 되므로 VSM 보다 더 적은 메모리를 사용합니다. 구현 SSM(Standard Shadow Map)의 경우 ShadowMap에 Depth 값을 저장합니다. 하지만 ESM의 경우 저장하는 값이 달라질 뿐 나머지 과정은 모두 동일합니다. 그리고 ShadowMap 의 필터링도 미리 처리해둘 수 있는 장점이 있습니다. 아래 그림에서 기존 S..
-
Variance Shadow Map(VSM)Graphics/Graphics Study 자료 2020. 4. 16. 17:50
Variance Shadow Map(VSM) 최초작성 : 2020-04-16마지막수정 : 2020-04-16최재호 개요Standard shadow map 의 Shadow edge를 부드럽게 처리할 수 있는 기법 중 하나입니다. VSM은 PCF에서 발전한 알고리즘입니다. PCF는 현재 픽셀의 Depth 값과 Shadow map의 일정 영역의 Depth 값을 비교하여, Shadowing 되는 비율을 얻어내는 알고리즘입니다. 만약 비교한 Shadow map의 영역이 총 9개의 텍셀이고, 그중 3개만 Shadowing 상태면 3/9 = 1/3 만 Shadowing 처리를 하여 Shadow의 가장자리를 부드럽게 처리합니다. VSM을 만든 저자는 우리가 PCF를 할때 실제로 하려고 하는것에 집중했습니다. PCF 를..
-
Signed Distance FieldsGraphics/Graphics Study 자료 2020. 4. 13. 00:27
Signed Distance Fields 최초작성 : 2020년 4월 10일 최종수정 : 2020년 4월 10일 최재호 목표 SDF의 의미 파악과 실제 활용과 구현에 대해서 알아보자 소개 Signed Distance Fields(이후 SDF로 부름) 는 아래와 같이 Geometry의 내부는 +, 외부는 -, 그리고 Edge에 근접할 수록 0이 되는 형태의 데이터 입니다. 예를들어 아래와 같은 Geometry가 있다고 해봅시다. SDF 로 표현하면 아래와 같습니다. 3차원으로 표시하게 되면 아래와 같습니다. SDF는 주로 폰트 렌더링시 외곽선이 깔끔하게 나오지 않는 문제를 해결하기 위해서 사용합니다. 아래 이미지 처럼 AlphaBlend나 AlphaTest 두가지 방법다 깔끔한 에지를 만들어주지 못하지만 ..
-
Light Indexed Deferred RenderingGraphics/Graphics Study 자료 2020. 4. 3. 01:24
Light Indexed Deferred Rendering 최초작성 : 2020-04-03 마지막수정 : 2020-04-03 최재호 목표 Light Indexed Deferred Rendering의 이해와 구현 소개 Light Indexed Deferred Rendering (이하 LIDR)은 Forward Rendering에서 다수의 Light를 빠르게 렌더링하기 위해서 사용됩니다. Forward Rendering은 Deferred Rendering과는 다르게 Light 개수가 많을수록 성능에 영향을 많이 받습니다. 예를 들어 Pixel Shader에서 1개의 픽셀을 대상으로 Shading을 수행한다고 합시다. 이때 1 개의 픽셀이 어떤 Light로 부터 영향을 받는지 알아내기 위해서는 모든 라이트의 ..
-
DeepShadowMap(DSM)Graphics/Graphics Study 자료 2020. 2. 25. 08:02
DeepShadowMap(DSM) 최초작성 : 2020-02-24 마지막수정 : 2020-02-24 최재호 소개 Volumetric shadow 기법 머리카락과 같은 물체에 의해서 차폐되어 그림자가 생기는 경우를 고민해보자. 이 경우 그림자는 즉시 완전히 차폐 되는 것이 아니라 일부 빛은 머리카락을 통과하여 그림자가 서서히 진해지게 된다. DSM을 통해서 이 부분을 표현할 수 있다. 링크드리스트로 Depth 정보를 연결하여 해당 픽셀의 Depth에서의 투과율 정보를 Alpha로 저장함. 아래 이미지처럼, 가려지는 횟수가 많아질 수록 Lit 값이 점점 떨어지게 됨. 일반 ShadowMap의 경우는 가려지는 즉시 해당 ShadowMap의 Depth 값 보다 카메라에서 더 멀리 있는 물체는 모두 그림자를 만들..
-
Dual Paraboloid ShadowMapGraphics/Graphics Study 자료 2020. 2. 18. 23:47
Dual Paraboloid ShadowMap 최초작성 : 2020년 2월 17일 최종수정 : 2020년 2월 17일 최재호 목표 Dual-Paraboloid Map 소개 소개 Environment or Shadow map을 생성하기 위해 사용할 수 있는 알고리즘 2개의 Paraboloid(포물면) 을 이어 붙인 형태로 아래의 공식을 사용하여 생성 위와 같은 형태의 Paraboloid 선택. (편미분하게 되면, x or y 로 딱 떨어져서 1/2를 사용하는 것 같음) Math3D.org 에서 렌더링한 Dual Paraboloid Paraboloid의 특징으로 아래와 같이 Focal Point 방향의 입사광선은 Paraboloid와 평행한 방향으로 반사된다는 것 위의 그림처럼 입사광선(In)이 있을경우 반..