ShaderX5
1.2 Micro-beveled Edges
FinalNormal = Lerp(FaceNormal, AverageNormal, MaskIntesity);
- Beveling : 모서리를 둥글게 만듬
- 둥글게 만들 모서리를 표시한 텍스쳐를 사용
저자
- Homam Bahnassi, Wessam Bahnassi
reference
1.4 Cloth without Cloth
- 완전히 구부려졌을 때, 펴져있을 때 노멀맵을 가지고 블렌딩
- 블렌딩을 할 영역을 표시하는 마스크 맵도 필요
저자
- Jörn Loviscach
reference
2.1 A Simple Area Light Model for GPUs
- 범위 조명 면 위에 가장 큰 영향을 미치는 점광원으로 라이팅
저자
- Aick in der Au
reference
2.2 Alpha-to-coverage in Depth
- 범위로 알파를 표현하는 방법을 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
- 잔잔한 바람에 살랑살랑 흔들리는 식물을 표현하는 방법.
- 흔들리는 가중치를 높이 값으로 계산하고 월드 좌표계에서 vertex animation을 하기 때문에 높이 기준점이 되는 height bias를 vertex마다 가지고 있어야 한다.
- 나무 같은 경우는 나뭇잎이 더 많이 흔들려야 자연스러운데 나무뿌리로부터 떨어질수록 흔들리는 가중치가 늘어나는 게 아니라 높이로만 가중치를 계산하기 때문에 잎이 무성한 나무보다는 낙엽이 진 앙상한 나무 표현이 더 자연스러울 것 같다. 나무는 제쳐놓고 풀, 잡초 표현에 사용하면 자연스러울 것 같다.
저자
- Ali Botorabi
reference
2.8 ZT-Buffer Algorithm
- depth peeling인데 개수를 제한해서 해보자
- ZT4-buffer
- depth 4개 사용
- 4개 이상을 blending하면 사람이 구별 못함
저자
- David Pangerl
reference
3.1 Real-Time Depth-of-Field Implemented with a Post-Processing only Technique
- ShaderX2, ShaderX3에 소개된 내용을 기반으로 한다.
- 깊이 버퍼의 값을 이용해 Screen space에서 DOF 효과를 렌더링한다.
저자
- David Gilham
reference
3.2 Selective Supersampling
- Anti-Aliasing 기술 중 전화면 supersampling은 퍼포먼스 때문에 피하고 폴리곤 가장자리만 Anti-Aliasing을 해주는 multisampling을 많이 사용
- 여기서 multisampling만 해준다면 폴리곤 내부는 Anti-Aliasing이 되지 않기 때문에 눈에 확 띄는 스펙큘러 같은 high-frequency 컴포넌트는 시점에 따라 어른거리는 현상이 나타남.
- 밉맵을 쓰는 이유와 같다.
- 가장자리는 multisampling을 해주고 어른거리는 문제가 생기는 부분만 supersampling을 해주자는 내용.
저자
- Emil Persson
reference
4.2 Multisampling Extension for Gradient Shadow Maps
- #shaderx4 4.2 Eliminating Surface Acne with Gradient Shadow Mapping에서 봤던 Acne 제거 기술을 확장.
- PCF로 그림자 가장자리를 부드럽게 만든다.
- 전체 PCF 영역에서 gradient를 근사해 샘플링 횟수를 줄인다.
저자
- Christian Schueler
reference
4.4 Edge Masking and Per-Texel Depth Extent Propagation For Computation Culling During Shadow Mapping
- 만들어진 Shadow map에서 anti-aliasing을 위한 복잡한 연산을 할 영역을 찾아내고 그 영역만 복잡한 연산을 하는 알고리즘.
- edge map과 mipchain을 생성하지만 모든 텍셀에 PCF를 거는 것보다는 성능이 좋다.
- mipmap을 texel과 pixel 해상도의 차이 때문에 지글거리는 현상을 제거하기 위해서만 사용했는데, edge를 확장할 때도 사용하는 방법을 보여준다.
저자
- John R. Isidoro
reference
4.5 Queried Virtual Shadow Maps
- 여러장의 Shadow map을 사용한다.
- 거리에 따라 나누는 CSM과 달리 Tile 단위로 나눈다.
- 4096 * 4096 Shadow map을 16 * 16으로 사용하는 대인배 알고리즘.
저자
- Markus Giegl, Michael Wimmer
reference
4.6 Real-time Soft Shadows with Shadow Accumulation
- 반영(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
- 빌보드를 구체로 가정해서 렌더링
- \(\Delta s\) 를 구해 투명도에 반영
- 이 때문에 불투명 물체 깊이를 저장한 텍스쳐가 필요
저자
- Tamás Umenhoffer, László Szirmay-Kalos, Gábor Szíjártó
reference
5.2 Per-Pixel Lit, Light Scattering Smoke
float3 f3FinalColor = f3Lighting * f4DiffuseColor.rgb + f3BacklitTerm * fSSSTerm + fAmbientTerm;
- 노멀맵을 사용한 per-pixel lit
저자
- Aurelio Reis
reference
5.3 Volumetric Clouds and Mega Particles
- 많은 파티클 대신 적은 수의 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
- 비 내리는 효과를 파티클을 사용하지 않고 후처리로 표현하는 방법.
- 결과물이 환상적이다.
- 허나 이 아티클에서 자세히 설명하는 건 하나도 없다.
저자
- Natalya Tatarchuk
reference
6.3 Interactive Refractions and Caustics Using Image-Space Techniques
- 충돌 점, 굴절률을 반복적으로 계산
- 2차 굴절까지만 고려해도 만족할만한 결과
- caustic은 texture를 사용해 해당 텍셀에 도달하는 포톤 수를 누적해서 사용
저자
- Chris Wyman
reference
- http://cafe.naver.com/shader/913
- 발표자료 질이 좋다
8.1 Post-Processing Effects in Design
- 확장이 손쉽고 다양한 요구 사항에 유연하게 적용 가능한 포스트 이펙트 프레임워크(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
- 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
- 값에 따라 만들어둔 텍스트 텍스쳐 샘플링을 해서 출력하는 방법
- 값을 바로 볼 수 있는 shader 디버깅 도구가 없을 때, 사용하면 되겠다.
저자
- Alexander Ehrath
reference
참고
- Shader study 발표자료를 바탕으로 요약
- ShaderX5 대충 보기 - blog
!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