ShaderX5

1.2 Micro-beveled Edges

nil

FinalNormal = Lerp(FaceNormal, AverageNormal, MaskIntesity);
  • Beveling : 모서리를 둥글게 만듬
  • 둥글게 만들 모서리를 표시한 텍스쳐를 사용

저자

  • Homam Bahnassi, Wessam Bahnassi

reference

1.4 Cloth without Cloth

nil

  • 완전히 구부려졌을 때, 펴져있을 때 노멀맵을 가지고 블렌딩
  • 블렌딩을 할 영역을 표시하는 마스크 맵도 필요

저자

  • Jörn Loviscach

reference

2.1 A Simple Area Light Model for GPUs

nil

  • 범위 조명 면 위에 가장 큰 영향을 미치는 점광원으로 라이팅

저자

  • Aick in der Au

reference

2.2 Alpha-to-coverage in Depth

nil

  • 범위로 알파를 표현하는 방법을 alpha-to-coverage라고 한다.
  • 픽셀을 꽉 채운 사각형 alpha를 1이라고 한다면 그것의 반만 채운건 0.5가 된다.
  • alpha-to-coverage 기초적인 내용을 담고 있음.
  • Order-Independent Transparency로 그리고 싶어서 사용한다.
  • 같은 alpha값을 가지는 폴리곤이 겹치면 문제가 생긴다.
    • alpha 값마다 고유한 패턴을 가지기 때문
  • 그래도 풀같이 밀집되고 자세히 안 보는 물체를 그릴땐 유용.

저자

  • Kevin Meyers

reference

2.4 Pre-Processing of Complex, Static Scenes for Fast Real Time Graphics

  • static scene을 빨리 그리기 위해 오프라인에서 텍스쳐를 만들고 런타임에 이 텍스쳐를 사용해 렌더링
    • color, normal, depth, position, SH buffer
  • 뭔가 뒤에 나올 것 같으나 이걸로 끝.
  • 이 아티클은 과감히 버려도 될 듯.

저자

  • Max Dennis Luesebrink, Kurt Pelzer

2.5 Overcoming Deferred Shading Drawbacks

Deferred shading 단점을 극복하는 방법을 얘기

메모리 사용량

  • 텍스쳐에 저장하는 컴포넌트 개수 줄이기
  • depth만 기록. normal x,y만 기록.
  • 줄이자.줄이자.

fill-rate

  • 영향을 안 주는 light를 쳐내자.

transparency

  • 필요한 녀석만 FR(forward rendering)
  • alpha to coverage
  • depth peeling

anti-aliasing

  • Over-sampling
  • Edge-smoothing filter
  • Color anti-aliasing
  • Color anti-aliasing + edge detection filter

저자

  • Frank Puig Placeres

reference

2.6 Normal Mapping without Pre-Computed Tangents

  • 버텍스에 탄젠트를 넣지말고 런타임에 픽셀 셰이더에서 계산
  • 장점
    • 버텍스 가벼움
    • 미러링과 절차적 텍스쳐 좌표에 상관없이 쓸 수 있다.
      • 탄젠트를 미리 계산해서 넣으면 처리하기 어려움
  • 46 인스트럭션이 나오나는데, 공격적인 최적화를 하면 14 인스트럭션까지 만들 수 있음
    • 품질도 나쁘지 않음
  • 버텍스 셰이더가 가벼워지고 픽셀 셰이더가 무거워진다

저자

  • Christian Schueler

2.7 Animating Vegetation Using GPU Programs

nil

  • 잔잔한 바람에 살랑살랑 흔들리는 식물을 표현하는 방법.
  • 흔들리는 가중치를 높이 값으로 계산하고 월드 좌표계에서 vertex animation을 하기 때문에 높이 기준점이 되는 height bias를 vertex마다 가지고 있어야 한다.
  • 나무 같은 경우는 나뭇잎이 더 많이 흔들려야 자연스러운데 나무뿌리로부터 떨어질수록 흔들리는 가중치가 늘어나는 게 아니라 높이로만 가중치를 계산하기 때문에 잎이 무성한 나무보다는 낙엽이 진 앙상한 나무 표현이 더 자연스러울 것 같다. 나무는 제쳐놓고 풀, 잡초 표현에 사용하면 자연스러울 것 같다.

저자

  • Ali Botorabi

reference

2.8 ZT-Buffer Algorithm

nil

저자

  • David Pangerl

reference

3.1 Real-Time Depth-of-Field Implemented with a Post-Processing only Technique

nil

  • ShaderX2, ShaderX3에 소개된 내용을 기반으로 한다.
  • 깊이 버퍼의 값을 이용해 Screen space에서 DOF 효과를 렌더링한다.

저자

  • David Gilham

reference

3.2 Selective Supersampling

nil

  • Anti-Aliasing 기술 중 전화면 supersampling은 퍼포먼스 때문에 피하고 폴리곤 가장자리만 Anti-Aliasing을 해주는 multisampling을 많이 사용
  • 여기서 multisampling만 해준다면 폴리곤 내부는 Anti-Aliasing이 되지 않기 때문에 눈에 확 띄는 스펙큘러 같은 high-frequency 컴포넌트는 시점에 따라 어른거리는 현상이 나타남.
    • 밉맵을 쓰는 이유와 같다.
  • 가장자리는 multisampling을 해주고 어른거리는 문제가 생기는 부분만 supersampling을 해주자는 내용.

저자

  • Emil Persson

reference

4.2 Multisampling Extension for Gradient Shadow Maps

nil

저자

  • Christian Schueler

reference

4.4 Edge Masking and Per-Texel Depth Extent Propagation For Computation Culling During Shadow Mapping

nil

  • 만들어진 Shadow map에서 anti-aliasing을 위한 복잡한 연산을 할 영역을 찾아내고 그 영역만 복잡한 연산을 하는 알고리즘.
  • edge map과 mipchain을 생성하지만 모든 텍셀에 PCF를 거는 것보다는 성능이 좋다.
  • mipmap을 texel과 pixel 해상도의 차이 때문에 지글거리는 현상을 제거하기 위해서만 사용했는데, edge를 확장할 때도 사용하는 방법을 보여준다.

저자

  • John R. Isidoro

reference

4.5 Queried Virtual Shadow Maps

nil

  • 여러장의 Shadow map을 사용한다.
    • 거리에 따라 나누는 CSM과 달리 Tile 단위로 나눈다.
  • 4096 * 4096 Shadow map을 16 * 16으로 사용하는 대인배 알고리즘.

저자

  • Markus Giegl, Michael Wimmer

reference

4.6 Real-time Soft Shadows with Shadow Accumulation

nil

  • 반영(penumbra) 표현이 핵심인 Soft-Shadow.
  • Single-sample 접근으로 시야 정보를 Shadow map의 한 형태로 기록한 정보를 이용해 Soft-Shadow를 렌더링한다.
  • 어떻게든 리얼 타임에 적은 비용으로 Soft-Shadow를 그리려고 하나 아직까진 무리인 느낌이 든다.
  • 결과물을 돌려보면 잘 찍은 스크린샷에 비해 실망감이 밀려오나 싸게 해보려는 시도에서 생각의 폭을 넓힐 수 있다.

저자

  • László Szirmay-Kalos, Barnabás Aszódi

reference

5.1 Spherical Billboards for Rendering Volumetric Data

nil

nil

  • 빌보드를 구체로 가정해서 렌더링
  • \(\Delta s\) 를 구해 투명도에 반영
    • 이 때문에 불투명 물체 깊이를 저장한 텍스쳐가 필요

저자

  • Tamás Umenhoffer, László Szirmay-Kalos, Gábor Szíjártó

reference

5.2 Per-Pixel Lit, Light Scattering Smoke

nil

float3 f3FinalColor = f3Lighting * f4DiffuseColor.rgb + f3BacklitTerm * fSSSTerm + fAmbientTerm;
  • 노멀맵을 사용한 per-pixel lit

저자

  • Aurelio Reis

reference

5.3 Volumetric Clouds and Mega Particles

nil

  • 많은 파티클 대신 적은 수의 mega-particle이라 부르는 3D구를 사용
  • blur 후에 distortion을 주려고 fractal cube를 사용

저자

  • Homam Bahnassi, Wessam Bahnassi

reference

5.4 Rendering Multiple Layers of Rain with a Post-Processing Composite Effect

nil

  • 비 내리는 효과를 파티클을 사용하지 않고 후처리로 표현하는 방법.
  • 결과물이 환상적이다.
  • 허나 이 아티클에서 자세히 설명하는 건 하나도 없다.

저자

  • Natalya Tatarchuk

reference

6.3 Interactive Refractions and Caustics Using Image-Space Techniques

nil

nil

  • 충돌 점, 굴절률을 반복적으로 계산
    • 2차 굴절까지만 고려해도 만족할만한 결과
  • caustic은 texture를 사용해 해당 텍셀에 도달하는 포톤 수를 누적해서 사용

저자

  • Chris Wyman

reference

8.1 Post-Processing Effects in Design

nil

  • 확장이 손쉽고 다양한 요구 사항에 유연하게 적용 가능한 포스트 이펙트 프레임워크(framework)를 제시
  • DirectX9에서는 input, output 텍스쳐(texture)가 같을 수 없어서 텍스쳐 두 장을 input, ouput으로 쓰게 되는데 포스트 이펙트가 여러 개이면 번갈아 가며 SetRenderTarget을 한다. 이 짓의 연속.
  • 중간에 있는 포스트 이펙트를 disable 시키려면 코드가 지저분해지는데, 이 챕터에서 소개한 프레임워크에서는 이펙트의 input, output 텍스쳐를 IO 그룹으로 래핑하고 disable 시키면 자신의 IO 그룹을 다음 이펙트에 넘겨주는 식으로 깔끔하게 구현했다.
  • 전체 소스코드도 책에 첨부된 시디에 있어 포스트 이펙트 엔진 설계에 힌트를 얻을 수 있다.

저자

  • Aurelio Reis

reference

8.2 Transparent Shader Data-Binding

  • 셰이더 상수 업데이트 시스템에 대해 설명.
  • Link system
    • static, dynamic data와 shader constant를 연결

저자

  • Dustin Franklin

reference

8.3 Designing Plug-in Shaders with HLSL

  • shader authoring tool 지원을 위한 shader code 구조 이야기
    • 사실 이것도 자세히 안 해…
  • external shader function을 제안
    • state.vec3Pos = ExDisplacementShader(vec3Pos, state);
    • 이런 식으로.
    • 만약 처리한다면 쿵짝쿵짝해서 주고
    • 아니면 첫번째 패러매터로 받은 녀석을 그냥 리턴

저자

  • Wessam Bahnassi

reference

8.4 Shader System Integration: Nebula2 and 3ds Max

nil

  • 3DSMax와 같은 DCC툴에서 머티리얼 편집기를 통해 셰이더 설정을 변경해가며 엔진 렌더러로 확인하는 방법.
  • 바로바로 확인할 수 있어서 작업 효율이 높아질 것 같다.

저자

  • Kim Hyoun Woo

reference

9.1 Large crowds of autonomous animated characters using fragment shaders and level of detail

  • world, agent, fsm을 texture를 사용해 구현.
  • 거리에 기반한 LOD map 생성
  • 별다른 내용 없다.

저자

  • Erik Millán, Benjamín Hernández, Isaac Rudomín

9.4 Collision Detection Shader Using Cube-Maps

  • Convex만 가능
  • 중점에서 거리를 cube-map에 저장
  • 충돌 검사를 할 때, cube-map에 저장된 길이와 대상 vertex와 거리를 비교해 충돌 판정

저자

  • Rahul Sathe

reference

9.9 Printf shader for debugging pixel shaders

nil

  • 값에 따라 만들어둔 텍스트 텍스쳐 샘플링을 해서 출력하는 방법
  • 값을 바로 볼 수 있는 shader 디버깅 도구가 없을 때, 사용하면 되겠다.

저자

  • Alexander Ehrath

reference

참고

!review

  • 1.1 Smoothed N-Patches
  • 1.3 Dynamic Wrinkle Patterns and Hatching on Animated Meshes
  • 2.3 Dynamic Parallax Occlusion Mapping with Approximate Soft Shadows for Detailed Surface Rendering
  • 3.3 Jump Flooding – An Efficient and Effective Communication on GPU
  • 4.1 Cascaded Shadow Maps by Wolfgang Engel
  • 4.3 Alias-free Hard Shadows with Geometry Maps
  • 5.5 Animation and Rendering of Underwater God Rays
  • 6.1 Irradiance Volumes for Real Time Rendering
  • 6.2 Indirect Diffuse and Glossy Illumination on the GPU
  • 6.4 Splatting of Diffuse and Glossy Indirect Illumination
  • 7.1 OpenGL ES 2.0 Shaders for Mobile Devices
  • 7.2 OpenGL ES 2.0 Engine
  • 7.3 OpenGL ES 2.0 Performance Recommendations for Mobile Devices
  • 7.4 Real-time Tile based Texture Synthesis Using Non-rectangular Grids
  • 7.5 Cartoon Fire Effects Using OpenGL ES 2.0
  • 9.2 Interactive Image Segmentation Based on GPU Cellular Automata
  • 9.3 Real-time Cellular Texturing
  • 9.5 A GPU Panorama Viewer for Generic Camera Models
  • 9.6 Explicit Early-Z Culling for Efficient Fluid Flow Simulation
  • 9.7 Storing and Accessing Topology on the GPU: A Case Study on Mass-Spring Systems
  • 9.8 Implementing High-Quality PRNG on GPU