-
3D Gaussian Splatting: A new frontier in rendering
- the article provides an overview of Gaussian Splatting support in V
-
Efficient Scene Appearance Aggregation for Level-of-Detail Rendering
- the paper presents a framework for volumetric scene prefiltering and level
-
keen games vulkan backend
- keen games released a snapshot of their Vulkan Backend implementation
-
Virtual Geometry in Bevy 0.15
- the article explains the changes that have been made to the Nanite
-
Work Graph Playground: a learning framework for GPU Work Graphs
- AMD released a shader toy-like application that allows exploration of D3D12 Work graphs
-
Innovating Strand by Strand for Lifelike Hair in Dragon Age: The Veilguard
- the blog post provides a high-level overview of the hair rendering technique used in Dragon Age th...
-
An Overview of Game Engine Architecture
- the slides discuss the design of the C4 Engine - present how the engine has been separated into se...
-
Harnessing Wave Intrinsics For Good And Evil
- the presentation shows how to use HLSL Wave Intrinsics
-
Optimize effective bandwidth of a 3x3x3 blur
- the Bluesky thread presents a detailed look at how to optimize a 3x3x3 blur
-
Implementing Order-Independent Transparency
- the article presents a technique for Order-Independent Transparency
-
OpenGL is not Right-Handed
- the article discusses the concept of coordinate systems and how it relates to column vs row
-
From the archive: Vegetation in COD:BO4
- the blog post provides an overview of the process of how procedural vegetation was implemented in ...
-
Exact UNORM8 to float
- the article goes into detail how to implement a floating point (0 to 1) conversion to 8bit and bac...
-
BC7 optimal solid-color blocks
- the blog post provides insight into the BC7 texture compression format
-
Implementing a tiny CPU rasterizer
- the article series about the implementation of a CPU rasterizer C++ continues
-
Introduction to Shaders
- the blog post presents a beginner-focused introduction to shader programming
-
Single-header BVH construction and traversal library.
- first release of a single header library for the construction and refit of Bounding Volume Hierarc...
-
Implementing a tiny CPU rasterizer
- start of a planned 12 part tutorial series on the implementation of a software rasterizer
-
Meshlet compression
- the article presents the findings of researach into compression of meshlet data for reduced memory...
-
[video] Dan Baker How to Start a Career in Computer Graphics Programming
- the video provides a look back at the speakers career in the video game industry
-
On Crafting Painterly Shaders
- the article presents a walkthrough of the development of a painterly post
-
Enterprise PBR Shading Model
- the spec focues on the mathematical description of the shading model
-
My Ray Tracing Gems Chapters
- collection of the author's articles from Ray Tracing Gems published in one place
-
Classic 3D videogame shadow techniques
- the article provides an overview of shadowing techniques as they have been used by video games of ...
-
(Yet another) Introduction to quaternions
- the article provides a walkthrough of quaternions deviations for computer graphics
-
EON: A practical energy-preserving rough diffuse BRDF
- the paper introduces Energy-preserving Oren–Nayar (EON) BRDF designed for rough surfaces
-
Fundamentals of Radiance Cascades
- the article provides an introduction to the Global Illumination technique called Radiance Cascades...
-
WebGPU Device Loss best practices
- the post explains what a device lost event is and how to handle it from WebGPU
-
The Ultimate Guide to Matrix Multiplication and Ordering
- the article provides a detailed overview of matrix multiplication
-
Texture-less Text Rendering
- the article discusses a technique to render debug fonts without the usage of textures
-
[video] niagara: Meshlets unchained
- the video continues meshlet implementation and looks at task shader performance on AMD hardware
-
Emulating Workgraphs
- the document explains how vkd3d-proton decides to emulate Vulkan Workgraphs using ExecuteIndirect
-
Drawing Graphics on Apple Vision with the Metal Rendering API
- the article describes how to use the native Metal rendering API for Apple Vision devices
-
GPU Work Graphs mesh nodes are now in Vulkan
- the article announces the release of Work Graphs as experimental Vulkan extensions
-
GPU Reshape Beta 2 Release
- the article introduces the new features in Reshape, a tool for instrumentation of GPU operations w...
-
Scaling Points In a Specific Direction
- the blog post presents two mathematical methods to scale points along a direction
-
[video] Graphics Pipeline Object // Vulkan For Beginner #14
- the tutorial series on Vulkan continues by implementing Graphics Pipeline objects
-
[video] Upscaling Face-Off: PS5 Pro PSSR vs PC DLSS/FSR 3.1 in Ratchet and Clank Rift...
- the video provides a comparison of different upscaling techniques for Ratchet and Clank Rift Apart...
-
[video] Mesh Shaders - The Future of Rendering
- the presentation provides a getting-started look at basic mesh shader implementations
-
[video] GPU driven Rendering with Mesh Shaders in Alan Wake 2
- the presentation provides a high-level view of the Mesh Shader implementation used on Alan Wake 2
-
[video] How I animate 3Blue1Brown | A Manim demo with Ben Sparks
- the video presents a walkthrough of a Python visualization framework for mathematical expressions
-
[video] GPU Reshape - Modern Shader Instrumentation and Instruction Level Validation
- the talk provides an overview of instrumentation-based GPU Validation system
-
Opening the Development of Intel Rendering Toolkit Libraries
- intel released the rendering toolkit as open source under Apache 2
-
Sampling From a Normal (Gaussian) Distribution on GPUs
- the paper presents an overview of 3 methods to sample normal Gaussian distributions
-
Let's talk about Animation Quality
- the article presents a detailed look at the quality aspects that relate to animation
-
Shader composition in Use.GPU
- the presentation provides an overview of the difficulties related to the composition of GPU graphi...
-
Interval Shading: using Mesh Shaders to generate shading intervals for volume renderi...
- the paper proposes the use of tetrahedrons as primitives for volume rendering using mesh shaders
-
Anisotropic Specular Image-Based Lighting Based on BRDF Major Axis Sampling
- the paper proposes an anisotropic specular image-based lighting method that can serve as a drop
-
Introducing Driver Experiments to the AMD Radeon Developer Tool Suite
- the blog post introduces the new Driver Experiments
-
Hierarchical Light Sampling with Accurate Spherical Gaussian Lighting
- This paper presents an approximation of the importance based on spherical Gaussians (SGs) for ligh...
-
[video] Master Class: Being a Tech Art Detective
- the talk presents an overview of the approach tech artists use to investigate effects in other dev...
-
Join our speakers in the Netherlands this November for the inaugural Graphics Program...
- the blog post covers which sessions AMD will be presenting at the Graphics Programming Conference...
-
[video] Gigi Lightning Talks
- the video presents a selection of short talks about different techniques and how it was implemente...
-
Device Generated Commands
- the blog post provides a brief overview of the state of Vulkan Device Generated Commands
-
Free Learn OpenUSD Trainings
- NVIDIA released an interactive and free course about learning OpenUSD concepts
-
Cache Points For Production-Scale Occlusion-Aware Many-Lights Sampling And Volumetric...
- the paper presents an in-depth description of a system for guiding direct light sampling of scene...
-
DeltaTime is a frame behind
- the blog post discusses the limitations of a classic delta time
-
FP8 data type - all values in a table
- the blog post presents an overview of the various 8
-
[video] CUDA Programming Course – High-Performance Computing with GPUs
- free course of 12 hours of content on CUDA development
-
Why does vkMergePipelineCaches exist?
- the article discusses how Vulkan Pipeline caches operate
-
DirectX Adopting SPIR-V as the Interchange Format of the Future
- the blog post introduces the start of the initiative to support SPIR
-
GStex: Per-Primitive Texturing of 2D Gaussian Splatting for Decoupled Appearance and ...
- the blog post introduces a technique to decouple the appearance and geometry of Gaussian
-
Graphics Programming Conference - Schedule
- The schedule for the graphics programming conference was released
-
Free Learn OpenUSD Trainings
- NVIDIA released an interactive and free course about learning OpenUSD concepts
-
GPU Debug Scopes
- the article presents how to group API commands in Vulkan through the use of GPU markers
-
AMD RDNA™ 3.5 Instruction Set Architecture (ISA) reference guide is now available
- AMD has released an Instruction Set reference guide for RDNA 3.5
-
Vector math library codegen in Debug
- the blog post describes the debug build performance of various compilers
-
Gradient Progress Bar - Procedural Shapes and Patterns - Episode 13
- the video tutorial presents how to implement a progress bar using SDFs
-
Towards Practical Meshlet Compression
- the paper proposes a codec designed explicitly for meshlet compression within a mesh shader
-
Shaders // Vulkan For Beginners #13
- the video explains the shader authoring pipeline for Vulkan applications
-
An introduction to workgraphs part 2: Performance
- the article presents a detailed look at D3D12 work graph performance on Nvidia hardware
-
Multi-process profiling support in Timing Captures
- the blog post shows how to profile an application with multiple processes using PIX for Windows
-
Surface vs Volume Formats in Tools
- the blog post provides a look at different mesh representation formats
-
DMMs (displaced micro-meshes)
- the paper presents a new method for the representation of skinned meshes with deformations for ray...
-
Learn GPU Programming in Your Browser
- the blog post introduces WebGPU-powered puzzles that aim to teach graphics programming
-
Freya's Guide to XYZ Axes and Handedness
- a diagram that visually explains left-handed vs. right
-
Building Real-Time Global Illumination - Radiance Cascades
- the blog post continues the discussion of the Radiance Cascades GI technique
-
Summing Blue Noise Octaves Like Perlin Noise
- the blog post presents the effects of combining multiple levels of noise
-
Determinism
- the blog post presents what is required to write deterministic algorithms
-
[video] Explaining my game engine in 2024 - Part1: Triangle mesh tangent space, norma...
- the video provides a summary of how normal maps can be used to augment surface detail
-
[video] Animated Loading Indicator - Procedural Shapes and Patterns - Episode 11
- the video presents how to combine polar coordinates, tiling, and blending to create a procedural l...
-
Khronos SIGGRAPH 2024 Rewind
- the blog post provides a collection of Khronos talks that happened during SIGGRAPH 2024
-
EDIZ: A Critical Look at a Simplistic Image Upscaling Approach
- the blog post discusses the EDIZ (Error Diffusion Image Zooming) algorithm for image upscaling
-
Adventures in Avoiding DAIS Buffers
- the article presents the authors' findings when exploring Visibility buffers and methods to access...
-
Screen Space Shadows
- the author presents his idea for a screen-space shadow technique that relies on Hierarchical Depth...
-
Bringing Explicit Pipeline Caching Control to Vulkan
- the blog post provides an overview of the new VK_KHR_pipeline_binary that allows direct retrieval...
-
The Neural Light Grid: A Scalable Production-Ready Learned Irradiance Volume
- the paper introduces a new method for precomputing indirect lighting into a novel form of Irradian...
-
Software rasterizing hair
- the author presents a discussion of how to apply software rasterizing to the problem of hair rende...
-
Layers All The Way Down: The Untold Story of Shader Compilation Background
- the blog post describes the reasoning why SDL GPU doesn't require a single portable high
-
[video] Animated 80s Sunset Pattern - Procedural Shapes and Patterns - Episode 10
- the video explains how to implement a perspective
-
The untimely demise of an image upscaler
- the article presents the effects of applying ML upscaling algorithms repeatedly to the same image
-
Characterizing CUDA and OpenMP Synchronization Primitives
- the paper presents an overview of the performance characteristics of synchronization primitives
-
VK_KHR_pipeline_binary
- this proposal discusses an alternative approach to Pipeline caching in Vulkan
-
Poor Foundations in Geometric Algebra
- the author presents how Geometric Algebra concepts are often defined in the literature and what be...
-
Compute With DirectX 12 – Part 2: The Setup
- the D3D12 tutorial presents how to get started with compute shader usage
-
Workarounds for issues with mesh shaders + Vulkan + HLSL
- the blog post explains how HLSL shaders compiled for mesh shader usage with Vulkan require special...
-
Recreating Nanite: Raytracing
- the article discusses a method to allow virtual geometry to be represented in ray
-
Decoding instructions with the machine-readable AMD GPU ISA specifications
- the short blog post presents how to use human-readable ISA documentation to decode one CDNA instru...
-
AMD GPU machine-readable ISA documentation
- AMD released ISA documentation for RDNA2 and CDNA ISA
-
Gigi: Rapid Prototyping Platform for Real-Time Rendering
- the blog post introduces a prototyping programming platform for shader development
-
Programmable Vertex Pulling // Intermediate OpenGL Series
- the video tutorial explains how to load vertex information from within a Vertex Shader instead of ...
-
Seamless Rendering on Mobile: The Magic of Adaptive LOD Pipeline
- the presentation discusses how to use cluster-based mesh representations to allow transitions betw...
-
Exact Polygonal Filtering
- the blog post describes an approach to calculating accurate filtering of polygonal shapes with clo...
-
Rust GPU Transitions to Community Ownership
- the blog post announces that Rust GPU (compiling Rust into SPIR
-
Closed-Form 3x3 Matrix Decompositions
- the article discusses a closed-form solution for polar and singular value decomposition of 3x3 mat...
-
[video] MaterialX Virtual Town Hall 2024
- the presentation covers the current state of OpenPBR and the state of integration into MaterialX
-
[video] Work Graphs: Hands-On with the Future of Graphics Programming
- the talk provides an overview of the D3D12 work graph API
-
Why Do Reflections Stretch At The Horizon?
- the post provides an explanation of Microfacet Models
-
Variable Rate Shading with Visibility Buffer Rendering
- the presentations provide a detailed overview of the challenges when implementing Visibility Buffe...
-
Ray Tracing Harmonic Functions
- the paper presents a technique that allows Harmonic Functions to be sphere
-
Synthesizing Realistic Clouds for Video Games
- the talk presents an overview of the Decima (Horizon Zero Dawn) cloud rendering system
-
Vulkan SC 1.0.15 Released: SPIR-V Validation and New NVIDIA Drivers for Desktop Syste...
- the blog posts documents which extensions have been ratified and included as part of Vulkan Safety...
-
Improving GPU Performance by Reducing Instruction Cache Misses
- the paper presents how to detect if a GPU workload is limited by instruction cache misses
-
Querying the PIX Timing Capture file format
- the blog post reveals that pix timing captures are internally using SQLite as a storage format
-
Highlights from HPG Conference 2024: Four exciting new research papers
- the blog post introduces AMD papers released at HPG (High
-
[video] Game Engine Programming 071.1 - Introduction to Physically Based Rendering
- the video presents a brief summary of Physically Based Rendering methods
-
[video] Pass me that render, please // Vulkan For Beginners #12
- the video tutorial explains the Vulkan render pass concept
-
[video] Keynote by Peter Shirley: 60 fps rendering: past, present, and future
- The keynote covers the history of computer graphics research (in algorithms, materials) with a foc...
-
A Visual Guide to Quantization
- the blog post visuall explains floating point quantization techniques
-
[video] EGSR2024: Ray Traced Stochastic Depth Map for Ambient Occlusion
- the talk recording discusses a method for calculating ambient occlusion using stochastic depth map...
-
[pptx] Flexible and Extensible Shader Authoring in Frostbite with Serac
- the Siggraph presentation presents Frostbites' shader authoring solution
-
Activision Releases Call of Duty®: Warzone™ Caldera Data Set for Academic Use
- the blog post announces the release of the geometry for the Call of Duty Warzone map in USD format...
-
Reconstructing Surfaces from SDFs via Tangent Points
- the paper presents a method that converts an SDF into a point cloud
-
[video] Game Engine Programming 070.3 - Mikk TSpace
- the video episode explains how to integrate Mikk TSpace tangent space calculation into the engine
-
GPU-friendly Stroke Expansion
- the paper presents a new method to apply strokes to lines in a GPU
-
[video] Karen Ghavam Keynote at HPG 2024
- the presentation recording discusses the development of the Vulkan ecosystem
-
MaterialX and OpenPBR Town Hall
- the presentation covers the current state of OpenPBR and the state of integration into MaterialX
-
Concurrent Binary Trees for Large-Scale Game Components
- the paper presents a concurrent binary tree (CBT) for adaptive triangulations of arbitrary (half
-
H-PLOC: Super-fast, high-quality BVH construction
- the paper presents an approach to BVH construction based on the parallel locally
-
DGF: A Dense, Hardware-Friendly Geometry Format for Lossily Compressing Meshlets with...
- the paper presents a block-compressed geometry format
-
Procedural generation
- the blog post provides an overview of generating a procedural world
-
Cache Points for Production-Scale Occlusion-Aware Many-Lights Sampling and Volumetric...
- This paper provides a deep dive into Disney's Hyperion Renderer's many
-
GigaVoxels DP : Starvation-Less Render and Production for Large and Detailed Volumetr...
- the paper presents a voxel scene processing model that allows on
-
Introducing Frame Latency Meter (FLM) v1.0
- AMD released a tool to help measure input to screen latency on Windows
-
Screen Space Indirect Lighting with Visibility Bitmask: Improvement to GTAO/SSAO Real...
- the blog post provides an overview of the author's implementation of Screen Space Indirect Lightin...
-
[video] Normal Mapping Adventures // OpenGL Intermediate Series
- the video tutorial provides an overview of the normal mapping technique
-
Foliage in AMD FidelityFX™ Brixelizer GI
- the 2-part article series explains how Brixelizer GI (a sparse distance field backed GI solution) ...
-
[video] Rectangle Signed Distance Field - Procedural Shapes and Patterns - Episode 4
- the video presents how to create an SDF for a rectangle using Unity and Unreal
-
Digital images
- the article explains how images are represented - covers the build
-
Real-Time Procedural Generation with GPU Work Graphs
- the paper presents a detailed look at how to use D3D12 work graphs to generate a procedural world
-
GPU Work Graphs mesh nodes in Microsoft DirectX® 12
- the series of articles discusses how work graphs are now allowed to execute mesh rendering work
-
PIX 2407.17-preview: Mesh Nodes in Work Graphs
- A brief blog post discusses what aspects of the new mesh nodes preview for d3d12 can be debugged u...
-
SCALE by Spectral Compute
- SCALE is a GPGPU toolchain allowing CUDA programs to be natively run on AMD GPUs
-
Instanced Skeletal Meshes with GPU Driven Animations using Vulkan
- the article discusses a solution to allow GPU instanced and animated models using Vulkan
-
Real-Time Hair Rendering with Hair Meshes
- the paper to be presented at SIGGRAPH 2024 presents a technique for rasterizing hair from hair str...
-
Behind the scenes: the Vulkan SC Ecosystem
- the blog post provides insights into the Vulkan variant for safety
-
LucidRaster: GPU Software Rasterizer for Exact Order-Independent Transparency
- the paper discusses the implementation of a compute
-
Introducing the AMD FidelityFX™ Breadcrumbs library
- the blog post introduces the new AMD library that aims to improve GPU hang debugging
-
Introducing AMD FidelityFX™ Brixelizer
- the blog post presents an overview of using Brixelizer for Ambient Occlusion and soft shadows
-
Introducing Arm Accuracy Super Resolution
- the blog post introduces Arm Accuracy Super Resolution
-
[video] Upscaling Face-Off: FSR 3.1 vs DLSS 3.7/ XeSS 1.3 - Has AMD Improved?
- the video provides a comparison to present the improvements done with FSR 3.1
-
[video] Combining Signed Distance Fields - Procedural Shapes and Patterns - Episode 3
- the video tutorial presents how to combine multiple SDFs in shaders
-
[video] Image Memory Barriers // Vulkan For Beginners #11
- the video provides an overview of the concept of image barriers
-
[video] 3D Toon Rendering in 'Hi-Fi RUSH'
- the GDC presentation explains how the toon rendering effect was achieved
-
Open Sourcing DXIL Validator Hash
- the blog post announces the intent to open source DXIL shader validation as well as to support a m...
-
State of Text Rendering 2024
- The survey paper presents a very detailed look at the state of font rendering
-
Graphics Programming Conference
- a new graphics programming-focused conference in Breda, Netherlands
-
[video] Exploring a New Approach to Realistic Lighting: Radiance Cascades
- the video explains visually step-by-step how the Radiance Cascades technique aims to solve Global ...
-
Spatial Indexing Algorithms
- X thread with a collection of Spatial Indexing Algorithms
-
[video] Lossless Scaling: Frame Generation For Every Game - But How Good Is it?
- the video presents how the "Lossless Scaling" mod generates in
-
[video] Circle Signed Distance Field - Procedural Shapes and Patterns - Episode 2
- the video tutorial presents how to create a signed distance field for a circle
-
[video] KEYNOTE: Use.GPU - Declarative/Reactive 3D Graphics by Steven Wittens
- the keynote presentation discusses the Use.GPU technology
-
GPU-friendly Stroke Expansion
- the paper presents a new method to apply strokes to lines in a GPU
-
VMF Diffuse: A unified rough diffuse BRDF
- the paper introduces a unified BRDF that allows a consistent expression of smooth to highly rough ...
-
Compute shader wave intrinsics tricks
- the blog post describes a couple of available shader intrinsics that allow the different threads o...
-
A Practical Real-Time Model for Diffraction on Rough Surfaces
- the paper introduces a real-time BRDF model addressing diffraction on rough surfaces
-
GPU profiling for WebGPU workloads on Windows with Chrome
- the blog post presents how to profile WebGPU applications with Nsight, PIX, and Radeon GPU Profile...
-
Residual path integrals for re-rendering
- the paper presents an approach for incremental re
-
High Performance Graphics - Conference Program
- the conference program for the High-Performance Graphics has been released
-
[video] SIGGRAPH 2024 Technical Papers Trailer
- the video shows an overview of Technical Papers to be presented at SIGGRAPH 2024
-
Patch Decomposition for Efficient Mesh Contours Extraction
- the paper presents a method for the efficient extraction of mesh contours
-
[video] Submitting Command Buffers // Vulkan For Beginners #10
- the next episode of the Vulkan tutorial series presents how to execute work to the GPU
-
[video] Intro To Procedural Shapes and Patterns - Episode 1
- new video tutorial series that will cover how to generate procedural shapes and patterns from shad...
-
[video] I Tried Turning Games Into Text
- the video presents an approach to develop an ASCII art shader approach (converts 3D rendering to t...
-
A quick introduction to workgraphs
- the blog post presents a walkthrough on how to implement a raytracing classification shadow optimi...
-
[video] GDC 2024 - GPU Work Graphs: Welcome to the Future of GPU Programming
- the GDC video presents a discussion of the new work graph features for D3D (also a Vulkan AMD
-
CPU performance optimization guide – part 1
- the first blog in a series about CPU optimizations
-
[video] I3D 2024 Papers Session 6 - Efficient Forward and Differentiable Rendering
- the video recording of I3D 2024 sessions covers the following papers
-
[video] Triangle Visibility Buffer 2.0
- the talk provides an overview of the experimental Triangle Visibility Buffer 2.0 implementation
-
From microfacets to participating media: A unified theory of light transport with sto...
- the paper presents a method that aims to unify microfacets and volumes for light transport purpose...
-
5 Reasons Why Box Plots are the Better Default Choice for Visualizing Performance
- the blog post presents why the author suggests using box plots over bar charts as the default way ...
-
[video] REAC 2024 DAY 1 Testing Rendering Code at Frostbite
- the talk presents the system used by EA's Frostbite team to test the rendering engine
-
[video] Coding Adventure: Optimizing a Ray Tracer (by building a BVH)
- the video explains the concept of a BVH (bounding volume hierarchy) and presents how it increases ...
-
Raymarching explained interactively
- the article provides an interactive walkthrough into the implementation of the Raymarching algorit...
-
[video] Quaternions to Homogeneous Points, Lines, and Planes
- the second path of the math tutorial series from GDC 2024 extends the dual quaternion knowledge (s...
-
[video] REAC 2024 DAY 2 Modernizing geometry rendering in Alan Wake 2
- the presentation presents updates done to the rendering pipeline of the internal engine used for A...
-
[video] I3D 2024 Papers Session 5 - Noise and Reconstruction
- the video recordings of Noise and Reconstrictions papers from I3D have been released
-
The engine of the future.
- following the REAC 2024 conference, this author composes his 10 predictions on how graphics engine...
-
[video] Rendering Engine Architecture Conference
- the video recordings for the Rendering Engine Architecture Conference have been released
-
Virtual Geometry in Bevy 0.14
- the blog post provides a detailed discussion of implementing meshlet
-
How I learned Vulkan and wrote a small game engine with it
- the blog post discusses the author's experience learning Vulkan through the development of a small...
-
Seiler’s Interpolation
- the short paper presents how to reformat bezier interpolation using cheaper functions
-
On Hash Functions for the GPU
- the article presents a geometric and statistical analysis of the PCG2D hash function
-
Machine Learning on the GPU - Case Study: Open Image Denoise
- the blog post provides a high-level view that explains machine learning concepts for practical usa...
-
Academy Software Foundation Releases OpenPBR 1.0
- the blog post introduces the release of the first stable release of OpenPBR
-
Perspective-Correct Interpolation
- the article presents how a rasterizer calculates intermediate values on a triangle
-
[video] I3D 2024 Papers Session 4 - Points and Splats
- The videos for I3D paper presentations have been released
-
[video] The OpenGL Software Ecosystem
- the video provides an overview of the OpenGL Ecosystem
-
Efficient Visibility Reuse for Real-time ReSTIR
- the paper presents a variance reduction technique for ReSTIR aimed at reducing shadow noise
-
[video] I3D'24 Technical Paper: Filtering After Shading with Stochastic Texture Filte...
- extended presentation of the I3D paper presentation discussed last week
-
Specular Polynomials
- the paper presents a way to reformulate SDS (a path with at least a specular, diffuse, specular bo...
-
Ray Tracing with Voxels in C++ Series – Part 6
- the article series extends the voxel rendering implementation to use path tracing
-
Microsoft® DirectSR and AMD FidelityFX™ Super Resolution technology
- the blog post explains the new DirectSR (Super Resolution) API
-
DXC 1.8.2405 Available Now, Including HLSL 202x
- the blog post introduces the ongoing work of implementing future HLSL versions directly into Clang...
-
Renderdoc - Version v1.33
- the latest version of Renderdoc includes a custom and improved DXIL disassembler
-
Real-Time Physically Guided Hair Interpolation
- the paper presents a new method that aims to improve hair interpolation from a smaller number of g...
-
Implementing General Relativity: Rendering the Schwarzschild black hole, in C++
- the blog post provides a high-level introduction to general relativity
-
Texture Streaming
- the blog post discusses the streaming system implementation in the Wicked Engine
-
[video] I3D 2024 Papers Session 2 - Light Transport and Storage
- video of the I3D 2023 Paper session on Light Transport
-
Construction of a Microfacet Specular BSDF: A Geometric Approach
- the paper provides a walkthrough explanation of the different components that define a BSDF (bidir...
-
Hemispherical Lighting Insights
- the paper introduces models to solve the reconstruction of irradiance in the vertex
-
Ray Tracing with Voxels in C++ Series – Part 5
- the series on voxel ray tracer continues by presenting how to accumulate samples over time with a ...
-
Getting Started In Computer Graphics
- the blog post provides a detailed description for programmers interested in graphics programming
-
Sun Beams / God Rays Shader Breakdown
- the article explains an approach to implementing Sun Beams using Billboarding techniques
-
Agility SDK 1.614.0: R9B9G9E5 support for Render Targets and UAVs
- the blog post presents that the latest D3D12 SDK update introduces support for R9B9G9E5 for Render...
-
Unity Shader Graph Basics (Part 8 - Scene Intersections 1)
- the video shows how to implement a shader effect that allows objects to change their appearance cl...
-
Recording the clear command // Vulkan For Beginners #9
- the video tutorial continues to discuss the implementation of a Vulkan renderer
-
Filtering After Shading with Stochastic Texture Filtering
- the paper presents an investigation into applying texture filtering after shading instead of befor...
-
Death To Shading Languages
- the author presents his view on shading languages and the (lack of) evolution
-
Real-Time Path Guiding Using Bounding Voxel Sampling
- the paper introduces a path-guiding method that utilizes an irradiance voxel data structure
-
Area ReSTIR: Resampling for Real-Time Defocus and Antialiasing
- the paper introduces Area ReSTIR that extends ReSTIR to be able to be applied to sub
-
Ray Tracing with Voxels in C++ Series – Part 4
- the article continues the series that covers the implementation of a voxel raytracer
-
A Fully-correlated Anisotropic Micrograin BSDF Model
- the paper presents an improved version of a BSDF developed for micro grain materials
-
[video] Beyond White Noise for Real-Time Rendering
- the video presents how different types of noise for random number generation can affect the result...
-
Shapes and forms of DX12 root signatures
- the article provides an excellent overview of the different ways to create root signatures in D3D1...
-
Recreating Nanite: Mesh shader time
- the article discusses how to implement cluster-based mesh rendering using mesh shaders
-
N-BVH: Neural ray queries with bounding volume hierarchies
- the paper introduces a new neural method to compress BVH for raytracing workloads
-
AMD GPU architecture programming documentation
- AMD released documentation for the Micro engine and the RDNA 3 ISA
-
Pre-condition block compressed textures with Brotli-G
- the blog post presents that the Brotli-G (GPU compression library) now allows a pre
-
Ray Tracing with Voxels in C++ Series – Part 3
- the article continues the development of a voxel raytracer by explaining anti
-
Buffer Those Commands! // Vulkan For Beginners #8
- the video tutorial explains the Vulkan command buffer concepts
-
The shader graph contract
- the article discusses the design trade-offs for a shader graph system
-
ZH3: Quadratic Zonal Harmonics
- the paper introduces the ZH3 format for spherical harmonics that fills the gap between linear and ...
-
Apple’s Mysterious Fisheye Projection
- the blog post discusses projection methods for spherical videos
-
[video] Math in Game Development Summit: A Visual Guide to Quaternions and Dual Quate...
- the GDC talk presents a great explanation of Quaternions and expands the concepts to cover dual qu...
-
Ray Tracing with Voxels in C++ Series – Part 2
- this blog post covers how to extend a raytracer in a voxel world with support for reflections
-
Meshed Radiance Manifolds for Efficient Volumetric Rendering of Dynamic Faces
- the paper introduces a method for view synthesis of facial expression captures in 3D views not cap...
-
[video] I3D 2024 Papers Preview
- the video presents a summary of all the papers that will be presented at the I3D Conference 2024
-
One Noise to Rule Them All: Learning a Unified Model of Spatially-Varying Noise Patte...
- the paper discusses a generative model that is trained to generate multiple types of noise and ble...
-
Filter-Adapted Spatio-Temporal Sampling for Real-Time Rendering
- the paper presents a framework to shape rendering noise to optimize samples for perceptual quality...
-
[video] Nanite for Artists | GDC 2024
- the video shows the limitations of Nanite from an artist's perspective
-
Introducing Reverse Z (AKA I'm sorry for breaking your shader)
- the Godot engine is switching the definition of near/far plane, with the near plane now mapping to...
-
Take a deep dive into Nanite GPU-driven materials
- the presentation is packed with detailed information about the process of implementing shader grap...
-
Real-time denoising of importance sampled direct lighting
- The Master Thesis is a collaboration with Remedy Entertainment and discusses the implementation of...
-
Ray Tracing with Voxels in C++ Series – Part 1
- the start of a series of articles covering the implementation of ray tracing for a voxel system
-
How to Compact Acceleration Structures in D3D12
- the blog post shows how to implement Acceleration Structure compaction using D3D12
-
Demystifying multiple importance sampling
- the article provides a full explanation of the derivation of multiple
-
GPU Compute in the Browser at the Speed of Native: WebGPU Marching Cubes
- the article explains how to implement a marching cube compute shader
-
The Performance Impact of C++'s final Keyword
- a blog post covering the effect of using C++ final on a ray
-
Raytracing - Articles
- this page serves as a starting point for the articles of the author
-
Radeon™ GPU Profiler 2.1 adds interoperability with Radeon™ GPU Analyzer (and more)!
- the article introduces how shaders from GPU Profiler captures can now be opened in the GPU Analyze...
-
Alan Wake 2: A Deep Dive into Path Tracing Technology
- the video presentation (free login required) discusses the implementation details of Path Tracing ...
-
Transforming a Non-Differentiable Rasterizer into a Differentiable One with Stochasti...
- the paper presents a method that allows existing non
-
VNDF importance sampling for an isotropic Smith-GGX distribution
- the article introduces a specialization for the isotropic distribution of visible normals for GGX
-
Colour Science Precis for the CGI Artist
- a collection of summaries about color science aimed at computer graphics artists
-
Real-time Seamless Object Space Shading
- the paper introduces an object space shading method based on per
-
[video] Terrain Tessellation Shaders // Terrain Rendering Episode 13
- the video explains how to use OpenGL tessellation shaders to implement a dynamic level of detail f...
-
[video] An Optimisation 6 Years In The Making
- the video presents techniques to represent light shafts
-
GM Shaders Guest: Radiance Cascades
- the blog post explains the Radiance Cascades technique for global illumination
-
Flattening Bézier Curves and Arcs
- the post presents three methods to convert (Quadratic, Cubic) Bézier curves and elliptical arcs in...
-
3D Toon Rendering in 'Hi-Fi RUSH'
- the GDC presentation provides an in-depth view into how the visual stylized shading was implemente...
-
DirectX State of the Union Ft. Work Graphs and Introducing DirectSR (Presented by Mic...
- the GDC 2024 presentation covers the problems with Draw Indirect and how Work Graphs are designed ...
-
[video] Coding Adventure: Rendering Text
- the video deep dives into font rendering - starts by exploring the True Type Font format
-
Graphics Programming Conference
- a new graphics programming conference to happen in Breda (Netherlands) in November
-
Recreating Nanite: Runtime LOD selection
- the blog post discusses how to implement a continuous LOD system for meshlet
-
Optimizing UE5: Rethinking Performance Paradigms for High-Quality Visuals - Part 1: N...
- the presentation provides an overview of the Nanite and Lumen systems
-
[video] Dithered Transparency in Unity Shader Graph
- the video explains the difference between alpha blending and dithered transparency
-
RenderDoc - Version v1.32
- the latest version adds support for Slang with Vulkan, additional extensions support, D3D12 Pixel ...
-
Copy Queue woes.
- the article presents how usage patterns of copy queues to upload and download data from the GPU ca...
-
Real-Time Lighting with Gaussian Splats
- the blog post describes a method to apply lighting to Gaussian Splats
-
[video] DJ! Swap that chain!!! // Vulkan For Beginners #7
- the latest video in the series explains how to create a Vulkan Swapchain
-
Game optimization with the AMD radeon developer tool suite
- the GDC presentation provides an overview of the profiler tools available from AMD
-
Moebius-style post-processing and other stylized shaders
- the article presents a walkthrough of how to implement a post
-
Open sourcing the WinPixEventRuntime under MIT
- the blog post announces that the Windows PIX runtime has been released as OpenSource
-
Sampling the disk from a square: The adoption method
- the article introduces an alternative low discrepancy sampling strategy for circles
-
Efficient CUDA Debugging: Using NVIDIA Compute Sanitizer with NVIDIA Tools Extension ...
- the blog post describes how to use the CUDA Compute Sanitizer to implement a resize
-
[video] GDC 2024 - Shader Instrumentation with GPU Reshape
- the GDC presentation discusses how the GPU Reshape tool enables GPU timeline validation
-
Ray Marching: Menger Sponge Breakdown
- the article provides an introduction to ray marching
-
Mesh shaders in AMD RDNA 3 architecture
- the presentation discusses mesh shaders and the techniques they enable
-
[pdf] Post-mortem GPU crash analysis with AMD radeon GPU detective (RGD)
- the presentation presents why debugging GPU issues is difficult
-
Upgrade Your Graphics: Explore New Ray Tracing Features for NVIDIA Nsight Tools
- the article discusses updates in the Nvidia developer tools
-
Procedural grass rendering
- the blog post describes how to implement a procedural grass system using mesh shaders
-
GI-1.1 adds support for glossy reflection rendering
- the blog post provides a brief overview of how glossy reflection got added to the GI 1.1 release
-
GDC 2024: We reveal incredible Work Graphs performance, AMD FSR 3.1, GI with Brixeliz...
- the article provides an overview of the announcements AMD made during GDC
-
Adventures with Differentiable Mesh Rendering
- the article explains how to approach differentiable rendering for mesh
-
Graphics Programming – Where To Start?
- the article provides a suggested collection of resources for beginners in graphics programming
-
[video] It is illogical (device) // Vulkan For Beginners #6
- the video provides a brief overview of the difference between physical and logical Vulkan device
-
[video] Too Many Developers Ignore These Optimisations
- the video provides a walkthrough of the steps when optimizing a voxel renderer
-
Unlock Seamless Material Interchange for Virtual Worlds with OpenUSD, MaterialX, and ...
- the article provides an overview of the different models available to describe the appearance of a...
-
Agility SDK 1.613.0 Available Now, Including Support for GDC 2024 Showcase Features
- the article provides an overview of all new features available in the D3D12 Agility SDK update
-
Work Graphs in Direct3D 12: A Case Study of Deferred Shading
- the article provides an overview of how a G-Buffer classification system for BRDF selection can be...
-
GDC 2024: Work graphs, mesh shaders, FidelityFX™, dev tools, CPU optimization, and mo...
- AMD provides a list of talks they will be presenting at GDC (starting today)
-
Font- and vector-art rendering with mesh shaders
- the article provides a detailed walkthrough of how to implement Loop’s and Blinn’s font rendering ...
-
Random walk method for quaternions
- the blog post discusses a method for generating uniformly distributed quaternions
-
Cross-Stage Shader Optimization
- the whitepaper presents which tools and optimizations passes in spirv
-
Recreating Nanite: LOD generation - faster, better, simpler
- second part in an article series about creating a LODing system that allows per
-
[video] 3D Gaussian Splatting! - Computerphile
- the video provides an explanation of Gaussian Splatting and how it connects to point clouds and ne...
-
PIX 2403.08 – New D3D12 features + misc PIX improvements
- the blog post provides an overview of new features and improvements in PIX
-
About fast 2D CDF construction
- the article presents a method for efficiently calculating the Cumulative Distribution Function or ...
-
Solar Storm Rendering
- the article provides a brief overview of the rendering engine architecture of the indie game Solar...
-
Vulkan Foliage rendering using GPU Instancing
- the blog post provides a walkthrough of the author's implementation of grass rendering using compu...
-
Screen Space Reflection
- the article presents how to implement screen space reflections using a single shader pass
-
The Smooth-Minimum operator or Smooth-Union
- the article provides an in-depth look at the Smooth
-
Inside Snapdragon 8+ Gen 1’s iGPU: Adreno Gets Big
- the article provides an in-depth look at the hardware details of the Snapdragon 8+ Gen 1 GPUs
-
[video] Let's Get Physical (Device) // Vulkan For Beginners #5
- the video tutorial explains the concepts related to GPU hardware detection
-
Ray-Tracing Validation at the Driver Level
- the article presents a new driver-level validation for Ray
-
[video] How Persona Combines 2D and 3D Art
- presents a complete walkthrough of the forward rendering model employed by Persona 3 Reload
-
How video games use LUTs and how you can too
- the article explains the concept of Look Up Textures (LUT)
-
Look, Ma, No Matrices!
- the article discusses the feasibility of replacing 4X4 Matrix multiplications with Geometric Algeb...
-
DirectX Innovation on Display at GDC 2024
- Microsoft presents what will be discussed at GDC 2024
-
How (Not) To Optimize Shaders
- the article presents the importance of profiling when optimizing
-
Creating a Surface Handle // Vulkan For Beginners #4
- the short video tutorial explains how to create and destroy a surface handle from a GLTF window
-
On Light, Colors, Mixing Paints, and Numerical Optimization.
- the article provides an in-depth discussion of how light behaves, how it interacts with the human ...
-
Vulkanised 2024 Playlist released
- the video recordings of the talks from the Vulkanised 2024 conference have been released
-
Shadeup Crash Course
- the article introduces the Shadeup language that aims to minimize boilerplate code required when a...
-
[video] Creating a Debug Callback Function // Vulkan For Beginners #3
- the video tutorial explains the necessary steps to ensure that all Vulkan validation messages will...
-
[video] Underwater Caustics Part 2 - Advanced Materials - Episode 42
- the second part of a video tutorial about the implementation of Caustics using Unreal and Unity
-
Graphite internships: announcing participation in GSoC 2024
- the Rust-based 2D editor Graphite is looking for Students to join the Google Summer of Code projec...
-
Collaborative Control for Geometry-Conditioned PBR Image Generation
- The paper introduces a machine learning model that generates a set of PBR Textures (albedo, Roughn...
-
GPU synchronization in Godot 4.3 is getting a major upgrade
- the article discusses the new RenderGraph implementation in Godot 4.3
-
GM Shaders: Blur Philosophy
- the blog post article discusses the implementation of a box blur shader
-
REAC 2024 Conference - Call for Submissions!
- the Rendering Engine Architecture Conference is looking for speakers for the 2024 edition
-
GPU Programming Primitives for Computer Graphics (course)
- the course presents an introduction to GPU compute shader algorithms
-
[video] Tech Focus: TAA - Blessing Or Curse? Temporal Anti-Aliasing Deep Dive
- the video provides a history of ant-aliasing techniques used in games
-
Gradient Descent With Adam in Plain C++
- the article explains the extension method to gradient descents called Adam
-
Vulkanised 2024
- The slides for the talks of the 2024 Edition of the Vulkanised conference have been released
-
[video] Creating an Instance // Vulkan for Beginners #2
- the video in a series of Vulkan tutorials explains how to create a Vulkan Instance
-
[video] Water Foam - Advanced Materials - Episode 40
- the video tutorial explains how to add surface foam around the edges of objects that intersect the...
-
Building the DirectX shader compiler better than Microsoft?
- the article presents the authors' work on allowing the DXC compiler to be built into a static libr...
-
Toward a next-gen vulkan shading language: our journey with slang
- the presentation shows an overview of the Slang shading language
-
[video] Explaining my game engine in 2023 - Part3: Tile-based light culling, compute ...
- the video explains Forward+ shading techniques - shows how to express frustum culling, how compute...
-
TRIPS: Trilinear Point Splatting for Real-Time Radiance Field Rendering
- the paper presents a novel approach to the Point Splatting rendering technique
-
Breakdown: Syndicate (2012)
- the blog post presents a frame investigating into a frame of the game syndicate from 2012
-
[video] I made a Compression Algorithm for Heightmap Terrain
- the video explains a compression technique developed for height field compression
-
The Apparent Simplicity of RGB Rendering
- the blog post describes the observer correlation and coupling that is introduced into computer gra...
-
Examining AMD’s RDNA 4 Changes in LLVM
- the blogpost discusses the changes AMD made to LLVM
-
[video] Vulkan For Beginners Tutorial #1
- the video introduces a new Vulkan tutorial - the video focuses on the introduction of the audience...
-
[video] When Optimisations Work, But for the Wrong Reasons
- the video provides an in-depth explanation of why LOD (Level of Detail) for 3D models helps to imp...
-
An Introduction To BCn Texture Compression, Part 1: BC4
- the article presents the start into a series of explaining BC (DDS, Block Compression) formats
-
Streamlining Subpasses
- the new Vulkan extension allows developers to express local dependencies between sub
-
Khronos Releases Maximal Reconvergence and Quad Control Extensions for Vulkan and SPI...
- Khronos released two new SPIR-V extensions - the first extension guarantees reconvergence behavior...
-
Portals are misunderstood
- the blog post describes the history of Portals and BSP trees
-
Don't Use Moving Averages
- the article presents issues with moving averages and suggests using binomial averages instead
-
Profiling WebGPU with PIX
- the article shows how PIX can be used to debug WebGPU applications
-
Efficient GPU Rendering for Dynamic Instances in Game Development
- the author discusses a method to use indirect drawing to draw a dynamic number of instances of eac...
-
Shining a light on Caustics with Shaders and React Three Fiber
- the blog post provides a detailed walkthrough of the implementation of a caustics effect using Web...
-
Mesh shaders: optimization and best practices
- the article presents an overview of mesh shaders and amplification shaders
-
Modernizing Granite’s mesh rendering
- the article presents a detailed look at implementing a mesh shader based rendering pipeline
-
Reprojection in a Ray Tracer
- the author presents an alternative method to calculate the previous frame screen space position gi...
-
Introducing GPU Reshape - shader instrumentation for everyone
- the blog post introduces a new GPU-based debugging tool to make finding shader issues easier
-
[video] Machine Learning for Game Developers
- the video provides an overview and introduction to machine learning from a game development perspe...
-
Creating Rhoxel Meshes From Integer Coordinates
- the article presents a method to construct rhombic dodecahedral honeycomb elements from an integer...
-
HLSL Constant Buffer Packing Rules
- the article explains the packing rules for Constant buffers when used with D3D11/D3D12
-
GPU Sorting - Overview
- the article provides an overview of GPU sorting algorithms
-
Shader Printf in HLSL and DX12
- the article discusses how to implement a printf statement that can be used from a shader
-
GM Shaders: Noise 3
- the article presents a walkthrough on the steps required to generate simplex noise
-
Hash Noise stability in GPU Shaders
- the article discusses the portability of different methods to calculate noises/hashes across GPUs
-
[video] How does Quad Tessellation work in OpenGL?
- the video provides an overview of different tessellation modes
-
[video] Vertex Animated Water - Advanced Materials - Episode 36
- the video tutorial shows how to create a water surface through the use of vertex displacement
-
Around The World, Part 11: Everything is harder on a sphere
- the article discusses the complexities of using operations on the surface of a sphere
-
Quaternion Weighted Average
- the article presents how to accurately calculate the average of a set of quaternions
-
Siggraph 2023 Courses - Videos released
- ACM has released the video recording for the SIGGRAPH 2023 courses
-
A Gentle Introduction to ReSTIR Path Reuse in Real-Time
- ACM released the video recording of the Siggraph course on the introduction to ReSTIR
-
[video] Inside Alan Wake 2: How Remedy Delivered A Visual Masterpiece
- the Digitial Foundry interview with a Technical Director and Lead Graphics Programmer from t...
-
[video] Vertex Displacement - Advanced Materials - Episode 35
- the video tutorial presents several use cases that vertex offset enables
-
[video] This Is Ray Tracing Supercharged!
- the article presents an overview of recent advances in light transport and compute graphics ...
-
DiffusionLight: Light Probes for Free by Painting a Chrome Ball
- the paper presents a method to estimate HDR EnvironmentMap (Chrome Ball) from a single input image...
-
Low-level thinking in high-level shading languages 2023
- the article presents how different shader constructs are converted into instruction on RDNA2
-
3D shape matching with quaternions
- the article discusses a technique that calculates the transformation required between a known base...
-
Creating a Directed Acyclic Graph from a Mesh
- the article discusses how to generate LODs using a meshlet
-
[video] How do Video Game Graphics Work?
- the video provides a great visual breakdown of the rendering pipeline
-
Beyond SAH — Building Optimal BVHs
- the article provides an overview of different heuristics to choose from when building a BVH for ra...
-
Dynamic diffuse global illumination
- the article provides a walkthrough of the practical tweaks and tricks used to implement a ReStir
-
Denoising raytraced images using OIDN
- the article provides insights into how to convert OpenImageDenoise into HLSL compute shaders
-
Mesh Shaders on RDNA™ Graphics Cards
- the blog post is the beginning of a series covering mesh shaders and how they map to the RDNA hard...
-
Occupancy explained
- the article provides an in-depth look at understanding shader occupancy on RDNA hardware
-
Optimizing Shaders in Unreal Engine
- the article presents techniques to help identify the performance cost of shaders created from unre...
-
Interpolation Using Wave Intrinsics
- the article presents a shader function that uses wave intrinsic to calculate interpolation of the ...
-
An update to our Render Graph
- the article provides an overview of the implementation of a render graph implementation
-
Vulkan Video Decode: First Frames
- the blog discusses the implementation of Vulkan video decoding to get the first frame of a video
-
Surface Gradient Bump Mapping Framework Overview
- the paper presents a retelling of the Surface Gradient Bump Mapping Framework paper from the autho...
-
Ray tracing animated crowds
- the blog post discusses how GPU-based animation for large crowds is implemented
-
[video] Digital Foundry's Best Game Graphics of 2023 - PC, PS5, Xbox, Switch - Anothe...
- year-end video that discusses the standout graphical games of the year
-
A gentler introduction to ReSTIR
- the blog post aims to introduce and explain the ReSTIR technique with a focus on implementation an...
-
Knockout City Frame Breakdown
- the article presents a breakdown of the primary render passes of the Knockout City frame
-
Advanced API Performance: Swap Chains
- the blog post collects advice on how to achieve the most stable presentation results when using DX...
-
How to programmatically check graphics driver version
- the article discusses several ways to query the driver version and how to interpret the results
-
Avatar: Frontiers of Pandora - the big developer tech interview
- the interview between DigitialFoundry and some of the developers of the developers from Massive pr...
-
Introduction to micro-meshes for mesh compression
- the article presents how to use Simplygon to generate micro
-
Simulating Fluids, Fire, and Smoke in Real-Time
- the blog provides an introduction to fluid dynamics and rendering
-
[video] Using Textures In The Vertex Shader - Advanced Materials - Episode 34
- the video tutorial explains how to sample textures from a vertex shader
-
Exploring the design space of remote scene approximation
- the blog presents a walkthrough of the author's R&D process when approaching the issue of generati...
-
Use the GPU, Luke!
- the blog post provides an overview of GPU programming concepts for non
-
Performance Comparison of Meshlet Generation Strategies
- the research paper presents the performance impact of different vertex clustering (meshlets) on th...
-
[video] GPU Crash Debugging in Unreal Engine: Tools, Techniques, and Best Practices |...
- the presentation shows the complexity of debugging issues that cause crashes that originate from G...
-
Shader on The Sphere
- a small website that allows the authoring of GLSL shaders and running them on a virtual "The Spher...
-
WebGPU/WebGL performance comparison best practices
- the article provides best practices to follow when comparing WebGL and WebGPU workloads
-
[video] How Games Have Worked for 30 Years to Do Less Work
- the video provides an explanation of techniques used by rendering systems to reduce the number of ...
-
DirectX? On my Linux??
- brief example blog post that presents how it's possible to use DXVK to build a native Linux elf th...
-
[video] Vertex Shader Optimization - Advanced Materials - Episode 33
- the video tutorial shows how to move computations from a pixel shader into a vertex shader
-
Introducing Radeon™ GPU Profiler 2.0!
- the blog post shows the release of the new version of the AMD GPU profiler
-
Our brand-new DirectStorage sample is available now
- AMD released a sample for DirectStorage that was presented during GDC 2023
-
Announcing AMD RenderStudio - supporting collaborative 3D creation and rendering in t...
- the blog post announces USD integration into the AMD RenderStudio
-
Coverage Bitmasks for Efficient Rendering Algorithms
- the presentation provides an overview of bitmasks and their uses in rendering
-
[video] Lengths, angles, projection, correlation | Linear algebra episode 2
- the video provides an excellent and detailed overview of the dot product
-
GM Shaders Mini: OkLab
- the article presents the issues when creating a color gradient from sRGB and linear color spaces
-
[video] How to Render a Wireframe On a Solid Mesh
- the video explains how to use a geometry shader to render a wireframe overlay on a mesh using a si...
-
[video] What Is A Graphics Programmer?
- the video provides the story of the author becoming a professional graphics programmer
-
[video] Introduction To Vertex Shaders - Advanced Materials - Episode 32
- start of a new shader tutorial series covering vertex shaders
-
[video] When Your Game Is Bad But Your Optimisation Is Genius
- the video presents techniques used to optimize terrain rendering
-
How We Render Extremely Large Point Clouds
- the article discusses a system to compute shader rasterize large point cloud datasets at interacti...
-
How do I become a graphics programmer? - A small guide from the AMD Game Engineering ...
- the article gives some advice on how to get started with graphics programming
-
(Graphics) Programming Resource List
- a start of a collection of books and resources for (graphics) engine programmers that I recommend
-
GM Shaders Mini: Phi
- the article presents Phi and the Golden Angle - shows how to use these numbers for a point distri...
-
Interpolating Color Image Histograms Using Sliced Optimal Transport
- the article provides a visual explanation of what an optimal transport problem is
-
WebGPU Render Bundle best practices
- the article describes the concept of render-bundles and how they can be used to reduce CPU overhea...
-
A library for creating and manipulating spherical and zonal harmonics.
- The author updated his library for spherical harmonics and zonal harmonics
-
Improved Multithreading in wgpu - Arcanization Lands on Trunk
- the article presents a look into the internals of the gfx
-
Performance tricks
- short blog post lists a couple of tricks to use when writing shaders for higher performance
-
Unlocking GPU Intrinsics in HLSL
- the blog post shows how to use Nvidia-specific intrinsics with D3D11 and D3D12
-
Dynamic vertex formats
- the article presents a couple of methods that can be used to read vertex information from shaders
-
Tiled per-triangle soft shadow volumes
- the article discusses an approach for the calculation of sun
-
[video] Optimize Your Meshes!
- the video tutorial presents how to use Mesh Optimizer to optimize meshes for faster rasterization
-
Interactive 3D Graphics and Games - Call for Participation
- The I3D conference for 2024 is looking for papers
-
GM Shaders Mini: The Matrix
- the tutorial provides a brief overview of matrix operations
-
Changing the game for Black hair
- the guide provides a collection of reference materials for different black hairstyles and advice f...
-
[video] code.talks 2023 - Making pretty things with code: Getting started as Technica...
- the talk presents an insight into the job of a technical artist
-
AMD - UE - Performance guide
- AMD released a performance guide that helps developers with profiling work when using UE
-
Physically Based Rendering: Fourth Edition
- the 4th edition of the Physically Based Rendering has been released to read on the web for free
-
Advanced API Performance: Intrinsics
- a brief blog post that describes what advantages Wave intrinsics can have
-
Secrets of Direct3D 12: Do RTV and DSV descriptors make any sense?
- the article provides an overview of the way D3D12 deals with resource descriptors
-
Intuiting Latency and Throughput
- video of the Performance-Aware Programming series that presents in real
-
Explore GPU advancements in M3 and A17 Pro
- the video presents an overview of the hardware changes in new Apple hardware generations
-
Discover new Metal profiling tools for M3 and A17 Pro
- the video discusses updates to the profiling capabilities of hardware/software updates
-
Why Cities: Skylines 2 performs poorly
- the article provides a breakdown of the GPU scene rendering of Cities: Skylines 2
-
Extending Materials in Bevy 0.12 with MaterialExtension
- the video tutorial presents how to extend the generic bevy rendering material to support custom ef...
-
[video] How do Major Video Games Render Grass?
- the video provides an overview of how Ghost of Tsushima rendered grass
-
[pptx] The Rendering of The Callisto Protocol
- the slides for the advances of rendering presentation have been released
-
NVIDIA Micro-Mesh Vulkan Sample
- Nvidia released a sample that explains how to render Micro
-
OpenPBR v0.2 Now Publicly Available
- the blog post describes the first public release of the Open Physically
-
Real-time dreamy Cloudscapes with Volumetric Raymarching
- the article presents the story of the development of a cloud shader that uses raymarching to rende...
-
Finding Real Polynomial Roots on GPUs
- the article discusses the implementation details of an efficient method to compute roots of Polyno...
-
PIX 2310.30: a faster PIX with many raytracing + other improvements
- the blog post discusses the changes in the latest significant PIX release
-
[video] Alan Wake 2 PC Path Tracing: The Next Level In Visual Fidelity?
- the video shows the visual fidelity of the PC version of Alan Wake 2
-
[video] How Are Games Rendering Fur?
- the video discusses the nature of hair and the aspects that make it a complex topic to reproduce
-
[video] OpenGL [Episode 30] [Theory] The View Matrix
- the video provides a beginner-level view of how a camera orientation can be represented and transf...
-
[video] Animated Flag Part 2 - Advanced Materials - Episode 27
- part 2 of the animated flag series extends the effect from the previous video
-
[video] Why can't you multiply vectors?
- the talk presents an overview of linear algebra
-
Machine Learning for Game Devs: Part 1
- the blog post introduces a new series about machine learning that aims to connect different discip...
-
Study Notes On The Marschner Hair Shading Model
- the blog post describes the The Marschner Hair Shading Model
-
GM Shaders Mini: Tonemaps
- the article presents the importance of tone mapping to reduce color clamping
-
Efficient CUDA Debugging: Memory Initialization and Thread Synchronization with NVIDI...
- the article presents the types of checks available by the NVIDIA Compute Sanitizer
-
Advanced API Performance: Descriptors
- the article presents a collection of recommendations for descriptor usage on Nividia using D3D12 a...
-
[video] RE:2023 Shader Translator: Implementation and Use
- the video presents how shaders are translated between HLSL and the target shading languages
-
[video] RE:2023 Is Rendering Still Evolving?
- the video presents an overview of the RE ENGINE graphics stack
-
The Best Darn Grid Shader (Yet)
- the in-depth article presents how to render a high
-
Setting up PSO Precaching & Bundled PSOs for Unreal Engine
- the article provides an overview of the methods available in UE5 to deal with Pipeline loading
-
[video] Animated Flag - Advanced Materials - Episode 26
- the video tutorial shows how to animate a flag using vertex shaders
-
[pdf] Bounded VNDF Sampling for Smith–GGX Reflections
- the paper introduces a method to reduce the amount of rejected rays for tracing rays following a v...
-
The white furnace test
- the article presents the white furnace test - discusses what the purpose of the test is and provid...
-
Book (w/ Turnable Pages) Breakdown
- the blog post presents how to set up a book with turnable pages
-
Doing dynamic resolution scaling? Watch out for texture memory size!
- the article discusses dynamic resolution scaling and its effect on memory usage
-
New Implementation of LTC Line Lights
- the article presents three issues with linearly transformed cosine (LTC) Line Lights
-
Designing Slang’s automatic differentiation
- the blog post introduces the new automatic differentiation feature for the slang shading language
-
The new sokol-gfx WebGPU backend
- the blog post discusses the implementation of WebGPU into the sokol
-
[video] Introduction To Tessellation in OpenGL
- the article provides an overview of the tesselation pipeline
-
Locally-Adaptive LOD for Hardware-Accelerated Ray Tracing
- the paper introduces a level of detail technique for triangular meshes for use with ray tracing wo...
-
Work graphs API – compute rasterizer learning sample
- the blog post shows how to implement a scan
-
Voxy tool development so far...
- the article discusses the author's development of a real
-
Advanced API Performance: Debugging
- the blog post discusses advice to help debug issues with GPU workloads
-
Unity 4D #4: Creating 4D Objects
- the article covers how to generate a 4D hypersphere
-
Dynamic Resolution Scaling (DRS) Implementation Best Practice
- the article discusses ten implementation details to consider when working on a Dynamic Resol...
-
Vulkan Documentation Just Got Easier!
- the blog post introduces the updated Vulkan documentation website
-
[video] Worn-Out LCD Screen Shader - Advanced Materials - Episode 25
- the video tutorial presents how to implement a material effect that simulates an old LCD scr...
-
Master Thesis - Volumetric data structures for real-time ray tracing
- The master thesis provides an overview of the different trade
-
[video] AMD FSR3 Hands-On: Promising Image Quality, But There Are Problems - DF First...
- the video provides an overview of the FSR3 frame generation
-
SimLOD: Simultaneous LOD Generation and Rendering
- the paper presents a method to incrementally construct a LOD structure for point clouds directly o...
-
Ray Tracing Spherical Harmonics Glyphs
- the paper introduces a new method to render Spherical harmonics glyphs efficiently
-
USD and glTF Resources Page
- the website presents a collection of USDs and glTF information
-
A Micrograin BSDF Model for the Rendering of Porous Layers
- the paper introduces the concept of micro grains to approximate layered materials
-
Stable Fiddusion - Frequency-domain blue noise generator
- the in-depth article discusses noise generation - presents a generation approach based on generati...
-
GPU driven rendering in AnKi: A high level overview
- the blog post discusses issues encountered when moving AnKi object visibility onto the GPU
-
Unity 4D #3: Rendering 4D Objects
- This article explains in detail how to render 4D objects in 3D space
-
From the archive: Notes on environment lighting occlusion.
- the article discusses Parallax-corrected cube maps and their related approximations
-
Introducing Desmos Studio's 3D Calculator (Beta)
- the article introduces that the Desmos calculator now supports 3D visualizations
-
GM Shaders Mini: Vector Spaces
- the blog post provides a summary of common spaces found in graphics operations
-
[video] Sampling of Environment Maps for Image-based Lighting [Shaders Monthly #13]
- the video shows how to sample texture lighting information stored in environment maps using import...
-
Toon Shading Fundamentals - From Cel-Shading to bidirectional toon ramps
- the article presents the basic steps for a toon shading implementation
-
Combining Resampled Importance and Projected Solid Angle Samplings for Many Area Ligh...
- The paper presents a combination of Resampled Importance Sampling (RIS) and Projected Solid Angle ...
-
Nonlinear Ray Tracing for Displacement and Shell Mapping
- the paper introduces a new approach to perform acceleration structure traversal and intersection t...
-
Making Gaussian Splats more smaller
- the blog describes how to compress the Gaussian splat SH data by using clusters and color palettes...
-
Chrome Graphics as Seen By Attackers
- the article provides an in-depth discussion about how WebGPU is implemented within Chrome
-
You’re calculating framerate percentiles wrong!
- the blog post describes the importance of considering the total runtime when calculating performan...
-
AMD FSR 3 game integrations out now + more details for developers
- the article provides a brief overview of the FSR algorithm implementation
-
[video] Game Engine Programming 060.3 - Explaining block compression formats and sRGB...
- the video explains BC texture compression - covers how the compression format works and the differ...
-
Reach For the Spheres: Tangency-Aware Surface Reconstruction of SDFs
- the paper introduces a new method for the triangle mesh reconstruction from an SDF representation
-
Interlocked min/max on HLSL single precision floats (Part II)
- the article presents improvements to using floating point atomic operations if all inputs have the...
-
Worley and His Noise (Worley Noise/Voronoi Noise)
- the article presents how to implement Worley/Voronoi noise
-
From WebGL to WebGPU
- the article presents a set of differences between WebGL and WebGPU
-
Radeon™ Raytracing Analyzer 1.3 is now available
- the latest version of the raytracing analyzer adds support for visualizing the rays in the scene
-
Radeon™ Memory Visualizer 1.7 is out now
- the latest edition of the Memory Visualizer adds improved support for resource aliasing
-
Radeon™ GPU Profiler 1.16 is here!
- the article presents changes in the latest AMD GPU profiler update
-
Introduction to 3D Gaussian Splatting
- the blog post provides an introduction to the Gaussian Splatting rasterization technique
-
Painting with Math: A Gentle Study of Raymarching
- the blog post provides a visual introduction to Raymarching
-
GM Shaders Mini: Math
- the article provides a brief overview of alpha blending and weighted averages
-
Making Gaussian Splats smaller
- the article discusses how to compress the data for the Gaussian Splats technique for reduced memor...
-
Onboarding floating-point
- the series of blog posts covers floating points and fixed point representations for numbers
-
[video] How I implemented MegaTextures on real Nintendo 64 hardware
- the video presents an overview of virtual texturing
-
Vulkanised 2024 - Call for Submissions
- the 2024 Vulkan conference Vulkanised is looking for speakers
-
Call for Authors GPU Zen 3
- the latest edition of the GPU Zen books is looking for authors
-
[pdf] Authoring Materials That Matters - Substrate in Unreal Engine 5
- The presentation covers the development of a new material model based on Slaps, Operators, and Tre...
-
What we talk about when we talk about Ray Tracing?
- The article provides an overview of ray tracing rendering concepts
-
Gaussian Splatting is pretty cool!
- The blog post describes a brief overview of the Gaussian Splatting technique
-
Interlocked min/max on HLSL single precision floats
- The article discusses a technique to implement atomic min/max operations on HLSL (that doesn't sup...
-
GM Shaders Mini: Imagination
- The blog post shows the importance of thinking in gradients
-
Constant Time Stateless Shuffling and Grouping
- The article introduces how to encrypt/decrypt are methods to allow reversible changes to data
-
[video] Wow, NVIDIA’s Rendering, But 10X Faster!
- The video presents a comparison of 3D Gaussian Splatting for Real
-
[video] I Tried Simulating The Entire Ocean
- The video provides a discussion of ocean simulation and shading
-
At A Glance: The Aliasing Problem in Computer-Generated Shaded Images
- The article presents a brief discussion of Aliasing in computer graphic
-
[pdf] HypeHype Mobile Rendering Architecture
- The presentation provides a detailed look at how the rendering API for HypeHype was rewritten for ...
-
[pdf] Large-Scale Terrain Rendering in Call of Duty
- The presentation covers the terrain rendering methods used in previous Call of Duty and shows the ...
-
GFXReconstruct on Android - How-To Guide
- The article presents the steps necessary to use the GFXReconstruct on Android
-
[video] CUDA Tutorials I Profiling and Debugging Applications
- The video tutorial contains a high-level overview of the profiling tools available for Cuda worklo...
-
New Work Graphs sample and Radeon GPU Profiler support for GPU Work Graphs
- The article presents a new D3D12 work graph sample to demonstrate how to classify screen space mat...
-
BroadLeaf: Developing a Real-Time Solution for Rendering Trees
- The article explains the Tencent tree rendering system
-
Solving Self-Intersection Artifacts in DirectX Raytracing
- the article presents a robust solution to resolve self
-
Advanced API Performance: Shaders
- the blog post provides best practices for shader performance
-
[video] Starfield: The Digital Foundry Tech Review
- the video presents a deep dive into the technical aspects of Starfield
-
[video] Billboarding With The Geometry Shader // Intermediate OpenGL Series
- the article presents how to use geometry shaders from OpenGL
-
Bezier curves
- The article provides an interactive explanation and exploration of Bezier curves
-
[video] MaterialX 2023 Virtual Town Hall
- Video recording of MaterialX-related developments in the virtual town hall meeting
-
vsync simulator
- The simulator provides the ability to experiment with different factors that affect the vsync effe...
-
Inside bend: screen space shadows
- The presentation and source code for the screen space shadows used in Days Gone have been released...
-
Ray-aligned Occupancy Map Array for Fast Approximate Ray Tracing
- The paper introduces a Ray-aligned Occupancy Map Array as an alternative to BVH
-
Radiance Cascades: A Novel Approach to Calculating Global Illumination[WIP]
- The paper presents a global illumination technique based on radiance cascades
-
Rendering Technologies behind Gran Turismo 7: VR, Ray Tracing and Sky Simulation
- the slides cover the difficulties of VR and what is required for a good user experience
-
Camera and lens definitions for VFX
- the article discusses the concept of focal length, presenting how different definitions of focal l...
-
[video] Mathematical Magic Mirrorball #SoME3
- the video explains how mirror balls enable the representation of 360
-
Optimizing Metal: Stitch several Metal functions into a single shader using MTLFuncti...
- the article presents how to use MTLFunctionStitchingGraph to allow the creation of a final shader ...
-
Hardcore Vulkan debugging – Digging deep on Linux + AMDGPU
- the blog post gives insights into debugging crashes originating on the GPU
-
Getting Started with Radeon™ GPU Detective 1.0
- AMD released a new tool to help with debugging GPU crashes
-
[SCC] Next Gen Development for Games | Sony Official
- a combination of three conference presentations recordings from the sony creator event
-
HLSL 2021 Migration Guide
- the latest version of DXC switches the default HLSL version to 2021
-
ShaderCrashingAssert
- release of a small header helper to implement a basic assert for GPU shader code
-
A Gentle Introduction to ReSTIR: Path Reuse in Real-time
- the course notes and slides for the ReStir course from Siggraph are available
-
Reverse Z (and why it's so awesome)
- the article presents how projection matrixes are expressed in different APIs
-
Interviewing Graphics Programmers
- the article presents a way to categorize graphics programmers into four broad groups
-
Speed Up GPU Crash Debugging with NVIDIA Nsight Aftermath
- Nsight Aftermath now supports application-specific markers to be inserted and accessed from the cr...
-
GM Shaders Mini: CRT
- the article presents how to create a post-processing effect that simulates the look of CRT TVs
-
Bringing shaders to contest programming
- the article presents how the author organized an online shader programming contest
-
[video] SIGGRAPH 2023 | Latest in Graphics Development and GPU Profiling with NVIDIA ...
- the video presents a short overview of the new developer features in Nvidia tools
-
[video] Skydome // Terrain Rendering episode #12
- the video presents the theory behind Skydomes and how they compare to sky boxes
-
Optimize 3D Assets with Khronos’ New glTF-Compressor Tool
- Khronos released a new tool to improve the experience when working with KTX compression
-
[video] The rendering techniques of Path of Exile (Alexander Sannikov)
- the presentation covers an overview of many rendering techniques used in Path of Exile
-
[pdf] Shadow Techniques from Final Fantasy XVI
- the paper discusses the Shadow Techniques used by Final Fantasy XVI
-
Occluding Contour Breakthroughs, Part 1: A Surprisingly Hard Problem
- the first part of a 3 part series that discusses occluding contour rendering
-
Why your GPU can (and probably should) do real function calls
- the article presents a discussion of functions calls in shaders
-
Learnings As a Graphics Lead
- the blog post provides an overview of leadership topics aimed at new graphics leads
-
Denoising-Aware Adaptive Sampling for Monte Carlo Ray Tracing
- The paper proposes an adaptive sampling technique for efficient Monte Carlo rendering with deep
-
Radiant Flux, Intensity, Irradiance, Radiance, and the Rendering Equation
- the blog post presents the rendering equation and derives the meaning by following the physical un...
-
Using decals to drive object shaders and post-processing.
- the blog post presents the idea of using decals to drive where post
-
Pixar, Adobe, Apple, Autodesk, and NVIDIA Form Alliance for OpenUSD to Drive Open Sta...
- the blog post presents the announcement of the formation of an organization for fostering the stan...
-
Approximate projected bounds [Updated]
- the article has been updated with improvements - covers efficient, conservative projected bounds f...
-
Advanced API Performance: Synchronization
- Nvidia presents the best practices for asynchronous compute queue work scheduling
-
Raytraced order independent transparency part 2
- the article presents a method that uses any hit shaders to implement order
-
Announcing GPU Work Graphs in Vulkan
- AMD announced the release of a Vulkan extension to support the experimental D3D12 Work Graph conce...
-
Korean edition of RTR4 available
- the blog post announces that the book Real-Time Rendering is now also available in Korean
-
Float to int casts for data compression
- the article discusses different methods that are available to convert from f32 to u32 data formats...
-
GM Shaders Mini: Dither
- the article presents an overview of dithering techniques
-
Unity 4D #1: Understanding the Fourth Dimension
- the article presents an introduction to the fourth dimension and explains how to imagine mathemati...
-
A Whirlwind Tour of Games Color Management
- the article provides a comprehensive overview of game color management and encoding complexities
-
PROGRAMMING: SDMV (Single Draw Multiple Viewport) Instanced Cubemap Rendering
- the article presents how to render geometry to the six faces of a cubemap from a single draw call
-
Roblox to Present 3D Motion and Rendering Research at SIGGRAPH 2023
- the blog post shows the talks Roblox will be presenting at SIGGRAPH
-
[video] Art Optimization: How FatShark constructed their central asset pipeline with ...
- the GDC presentation covers geometrical limitations and techniques that can be used to solve the b...
-
Rendering ‘God of War Ragnarök’
- the talk presents is a combination of leadership methods and rendering techniques of God of War Ra...
-
Advanced API Performance: Pipeline State Objects
- the article provides a list of best practice recommendations for usage of PSOs with D3D12
-
Calculate how many helper pixels a pixel quad has
- small twitter thread that presents how to use Quad intrinsics and IsHelperLane to visulize how eff...
-
[video] Nuclear's graphics tricks #1: simple outline rendering
- the quick video presents a method to render an outline of an object by taking advantage of wirefra...
-
Computational complexity of texture encoding
- the article explains how most tecture encoding formats operate in blocks, presenting how this redu...
-
Santa Monica Studio - Our GDC 2023 presentations
- Santa Monica Studio release the slides for all GDC 2023 presentations
-
Sub-pixel Distance Transform - High quality font rendering for WebGPU
- the article presents an in-depth look at SDF font rendering techniques
-
Micro-Mesh Overview (Part 1)
- the blog post provides a first high level overview of the micro
-
Effective use of the new D3D12_HEAP_TYPE_GPU_UPLOAD flag
- the article presents what ReBAR is and how it allows GPU resource to be directly CPU adressable
-
Real-Time Neural Texture Upsampling in ‘God of War Ragnarök’
- the presentation present a neural network approach used to upscale textures
-
[video] User Clip Planes // OpenGL Intermediate Series
- the video tutorial presents how one can use clip planes to cut geomeetry along plane equations
-
Raytraced order independent transparency
- the articles continues the exploration into order independent transparency techniques
-
[video] The Art of Linear Programming
- the video tutorial provides a visual introduction into linear programming
-
Marching Cubes, Explained Using Marching Squares
- the articles aims to provide an intuitive understanding of the marching cubes algorithmn
-
[video] It Takes Two, lava lamps, Raymarching in Godot 4.1
- the video describes how to use raymarching to draw a lava lamp effect
-
High Performance Graphics 2023 papers on the web
- collections of papers from the High Performance Graphics 2023 conference
-
The AMD FidelityFX™ SDK 1.0 is now available on GPUOpen
- AMD has released FidelityFX SDK that was announced during GDC 2023
-
Eurographics Symposium on Rendering 2023 papers on the web
- collections of papers from the Eurographics Symposium on Rendering 2023 conference
-
In-Game GPU Profiling for DirectX 12 Using SetBackgroundProcessingMode
- the blog post presents how to use available D3D12 APIs to create stable applications for profiling...
-
Tile-based Lightweight Integer Compression in GPU
- the paper introduces a tile-based decompression scheme aimed to allow data queries to operate in a...
-
Intermediate Graphics Library (IGL)
- Meta open-sourced their cross-platform library that provides a common graphics API abstraction
-
GPU 2D Drawing Part 2: Rectangle SDF. Masking. Rotations.
- the blog post discusses signed distance fields (SDF) for rectangles as well as how to render borde...
-
Rain Effects Breakdown
- the article provides a breakdown of how to implement a rain effect using Unity visual shaders
-
Skeletal animation in glTF
- the article provides an overview of skeleton animation in
-
[video] Windows Gaming On Mac: Game Porting Toolkit Tested! Cyberpunk, Hogwarts, Dead...
- the Digital Foundry video provides an overview of the Apple Game Porting Toolkit
-
[video] Skybox // Terrain Rendering episode #11
- the video tutorial presents how to render a skybox using OpenGL
-
[video] Building Roads Procedurally Using Unity's Spline Package
- the video tutorial presents how to build a road network using a spline system
-
Debugging CUDA More Efficiently with NVIDIA Compute Sanitizer
- This article discusses a code sanitizer in CUDA that is similar to one used in C++
-
Behind the Pretty Frames: Diablo IV
- the article provides an in-depth study of a Diablo IV frame rendering on PC
-
An Approximate Mie Scattering Function for Fog and Cloud Rendering
- The paper introduces a new method for representing scattering with varying particle sizes using un...
-
[video] Make Your Renders Unnecessarily Complicated
- the video shows an humerous overview of what is required to model a camera, with functioning lenes...
-
Signed Distance Function (Field)
- the article dicusses how to use signed distance functions to render a circle
-
Neural Intersection Function
- the paper introduces a replacement for bottom-level BVH traversal based on neural network techniqu...
-
[pdf] Path tracing in Production - The Path of Water
- the Siggraph 2023 course notes discuss the challenges faced related to water rendering on Avatar: ...
-
[video] Convolutions and adding random variables, visually explained
- the video explains the concept of convolution functions/filters
-
Real-Time Ray Tracing of Micro-Poly Geometry with Hierarchical Level of Detail
- the paper introduces a method that enables micro-poly geometry for raytracing workloads
-
D3D12 Work Graphs Preview
- the blog post announces the first public release of a new D3D12 feature called Work Graphs
-
GPU Work Graphs in Microsoft DirectX® 12
- the AMD guide provides a more in-depth look at the practical use of D3D12 Work Graphs
-
PIX 2306.21-preview: Work Graphs support
- the blog post announces support for the new d3d12 work graphs feature in the preview version
-
From 0 to glTF with WebGPU: Rendering the Full glTF Scene
- another part of the glTF rendering series - part focuses on how to interpret the scene hierarchy a...
-
[video] Let's Code a Realtime Fluid Simulation in Unity
- the video tutorial presents a walkthrough on the integration of a real
-
Task Graph Renderer at Activision
- the talk discusses the design of the Task Graph architecture used by Activision
-
Overview of Nitrous’ Decoupled Rendering Architecture
- the presentation slides explain the improvements done to decoupled shading
-
Real-Time Rendering of Glinty Appearances using Distributed Binomial Laws on Anisotro...
- the paper presents a new method to render glittery materials
-
Line Rendering Deep Overview - Part 1 - Extraction
- the article presents an overview of line extraction techniques
-
A note on Metal shader converter
- the article presents a discussion of the limitations of metal hardware related to barriers across ...
-
Sampling Visible GGX Normals with Spherical Caps
- the paper introduces a novel importance sampling algorithm for the GGX microfacet BRDF
-
Far Cry Dunia Engine Shader Pipeline - Long-term Vision & Lessons Learned
- the presentation covers the development story of the Far Cry shader system
-
Modern Mobile Rendering @ HypeHype
- the talk covers how the author designed a new rendering architecture aimed at mobile hardware
-
Day Night Cycle using LUT in Fragment Shader of Materials
- the article presents how a LUT (Look Up Table) can be used to apply a color transformation to conv...
-
CG Spotlight Slides - Screen Space Indirect Lighting with Visibility Bitmask
- slides covering Screen Space Indirect Lighting with Visibility Bitmask
-
Peeling back the varnish: The graphics of Diablo IV
- the blog post covers a high-level overview of topics covering Diablo IV graphics techniques
-
Bring your game to Mac, Part 2: Compile your shaders
- the presentation presents how to convert the D3D12 shader for use with metal
-
[video] OpenGL vs. Direct3D - Servan Keondjian & Casey Muratori
- the 2-hour interview discusses the history of the development of Graphics APIs
-
[video] I3D 2023 Keynote A Glimpse of Neural Rendering's Future by Marco Salvi
- the keynote presents an overview of the state of the art in neural rendering
-
[video] An introduction to Shader Art Coding
- the video tutorial explains shader programming aimed at newcomers
-
A Quickstart Guide to CUDA
- the article provides a tutorial on how to use CUDA for beginners
-
Stochastic Subsets for Bounding Volume Hierarchy (BVH) Construction
- The paper presents a new approach for constructing Bounding Volume Hierarchies (BVH) by leveraging...
-
GM Shaders Mini: Scaling
- the tutorial provides common scaling, stretching, and centering patterns when using pixel and UV c...
-
Iterative 𝛼-(de)Blending: a Minimalist Deterministic Diffusion Model
- the paper presents a rederivation of diffusion models with more straightforward concepts of mixing...
-
[video] Where did my intersections go?
- the short video presents how ray-sphere intersection points behave when expressed with imaginary n...
-
[video] I3D 2023 Papers Session 4 - Ray Tracing
- the video recording ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games 2023 for Ray Traci...
-
Rendering Engine Architecture Conference - 2023
- open, digital, and freely accessible conference covering many rendering engine architectures is ha...
-
[video] Frustum Culling // Terrain Rendering episode #9
- the video tutorial explains two different techniques of frustum culling
-
Khronos Osaka Dev Day Video and LunarG Presentation Slides Available
- slides and videos from the Khronos Osaka Dev Day have been released
-
Deus Ex – Alpha Terrain
- the article presents how the terrain in Deus Ex is quite different compared to other solutions
-
[video] [OpenGL Episode 25] Rotation Matrices (using glm)
- the video shows how rotation matrices are defined in mathematics and glm + OpenGL
-
[video] Halton Low-Discrepancy Sequence [Shaders Monthly #12]
- the video explains the effect of the Halton Sequence compared to random and grid sampling
-
Waterfall Shader Breakdown
- the article explains how to create a stylized waterfall effect
-
Micro-Mesh Construction
- the paper presents how to construct micro meshes from high
-
Unit Gradient Fields: SDFs, UGFs, and their friends
- the article provides a formal definition of a Unit Gradient Field
-
Advanced API Performance: CPUs
- the article presents CPU performance consideration for efficient usage of APIs
-
Introducing Vulkan Ray Tracing Position Fetch Extension
- the blog post describes a new Vulkan raytracing extension that allows the retrieval of positions f...
-
[video] I3D 2023 Papers Session 1 - Neural Rendering and Image Warping
- video recording for the first I3D conference paper session has been released
-
From 0 to glTF with WebGPU: Rendering the First glTF Mesh
- the second part of the glTF mesh series covers how to interpret mesh data and render from WebGPU
-
Shader Execution Reordering: Nvidia Tackles Divergence
- the article presents the effect of Shader Execution Reordering (SER) on GPU performance
-
Introducing AMD Capsaicin Framework - our ARR Research Framework which includes our G...
- AMD released a new research framework aimed at the rapid development of multiple rendering impleme...
-
A Rough Idea of How Photon Mapping Works
- the article provides an overview of the Photon Mapping technique
-
Stochastic Texture Filtering
- the paper investigates and presents the quality and performance influence of stochastic texture fi...
-
GPU Hang Exploration: Splitgate
- the article provides a walkthrough of how to investigate a GPU hang found in Splitgate on Steam De...
-
[video] GDC 2023 - Two-Level Radiance Caching for Fast and Scalable Real-Time Global ...
- the GDC presentation present a GI solution that aims to cache radiance into a cache hierarchy
-
[video] The LOD Manager // Terrain Rendering episode #8
- the video tutorial expands on the terrain rendering series by adding support for calculating LOD l...
-
RPS SDK Tutorial
- AMD released an extensive tutorial on how to use the Render Pipeline Shaders SDK
-
Microfacet theory for non-uniform heightfields
- the paper proposes a new method for the combination of rough surface NDFs
-
Real-Time Neural Appearance Models
- The paper presents a new method to represent materials utilizing learned hierarchical textures com...
-
I want to talk about WebGPU
- the article presents a history of graphics API and how WebGPU fits into the history
-
Advanced API Performance: Sampler Feedback
- the guide contains best practices for using Sample Feedback on Nvidia hardware
-
Vulkan Video Decoding
- the article presents the video functionality that Vulkan exposes
-
Unit Gradient Fields: What do we mean by offset?
- the article presents an overview of Unit Gradient Fields (UGFs)
-
Cyberpunk 2077’s Path Tracing Update
- the article presents an in-depth look at the performance of the latest Cyberpunk 2077 update
-
[video] Level Of Detail // Terrain Rendering episode #7
- the video tutorial about rendering terrain using OpenGL continues by explaining how LODs can be im...
-
Fine-grained backface culling
- Article discusses implementing backface culling in mesh shaders
-
Building a new graphics engine in Rust - Part 4
- the article presents progress on a Rust-based home graphics engine project
-
Radeon™ GPU Profiler 1.15 provides an enhanced ISA view experience and more
- the article presents improvements done to the AMD GPU profiler
-
[video] A neat realtime water caustics technique using partial derivatives in UE!
- the video explains how to use partial derivatives in HLSL shaders to calculate the amount of light...
-
[video] A visual explanation for 3D transformation matrix multiplications
- the video tutorial explains how matrices are combined
-
[video] Quake's PVS: A hidden gem of rendering optimization
- the video explains how PVS (Potential Visibility Set) used by Quake is implemented
-
Battlefront II: Layered Explosion
- the article explains how star wars battlefront explosion VFX has been implemented
-
Cubic Interpolation of Quaternions
- the article explains a series of Interpolation and shows how they build up to cubic Quaternion int...
-
Symposium on Interactive 3D Graphics and Games 2023 papers on the web
- a collection of papers from the I3D 2023 presentation
-
[video] Math in Game Development Summit: A Visual Guide to Quaternions and Dual Quate...
- the GDC talk explains how Quaternions and Dual Quaternions work and how they affect objects under ...
-
Advanced Graphics Summit: Realistic Real-Time Sky Dome Rendering in 'Gran Turismo 7'
- the GDC presentation discusses the new sky rendering model developed for GT7
-
GM Shaders Mini: FXAA
- the short tutorial presents how the FXAA algorithm is implemented
-
Simplifying Bézier paths
- the article discusses techniques to calculate Bézier that use fewer segments than the existing ori...
-
MaterialX - Version 1.38.7
- the latest version released from the Open MaterialX standards adds support for MaterialX Graph Edi...
-
The many ways of converting FP32 to FP16
- the article presents several different methods to convert between 32 and 16
-
Mipmap Generation
- the tutorial explains how to use WebGPU to use compute shaders to calculate the MIP maps for textu...
-
Contributing to Godot - Visual Shaders Nodes
- the article presents how to introduce custom shader nodes into the Godot Visual shader graph
-
New playground: integer.exposed
- the article introduces two new interactive playgrounds for integer and floating point numbers
-
[video] Advanced Graphics Summit: 'Marvel's Spider-Man' Remastered: A PC Postmortem
- the talk discusses how the PC port approaches PSO management to reduce stutter and manage memory w...
-
[video] Everyone can understand transformation matrices - and how it works
- the video explains visually to read and understand 4x4 transformation matrixes
-
Half baked and a half: a small update
- the blog post describes the approach of incrementally accumulating voxel data to augment the repro...
-
Direct3D 12: Adventures in Shaderland
- the article describes how Godot converts SPIR-V shaders to DXIL for D3D12
-
[video] I3D 2023 Papers Preview
- the video presents an overview of the papers that will be presented during the I3D 2023 in Bellevu...
-
[video] Cyberpunk 2077 Ray Tracing: Overdrive Technology Preview on RTX 4090
- the video presents the visual difference the overdrive (ReStir
-
NVIDIA Displacement Micro-Map Toolkit
- Nvidia released the Displacement Micro-Map Toolkit SDK
-
From 0 to glTF with WebGPU: The First Triangle - Updated for Chrome 113 Release
- the tutorial shows how to render a first triangle with WebGPU
-
Web3D Survey
- the website collects information about the API and extension availability for Web
-
Matrix Compendium
- the article provides a central place for matrix understanding for computer graphics
-
Random Sampling Experiments: Avoid The Sides!
- the blog post shows different sampling strategies
-
Shader Tutorial: Color Correction
- the tutorial explains how to apply color modifications in shaders
-
[video] Stylized Grass and the many techniques available in UE to reach the desired s...
- the long Video explains detailed how to render a Stylized grass
-
Subspace Culling for Ray–Box Intersection
- the paper proposes a new solution to accelerate AABB when used as BVH for objects that are thin an...
-
Efficient Spatial Resampling Using the PDF Similarity
- the paper introduces a new rejection method based on the PDF shape similarity between pixels for s...
-
World Space Path Resampling
- the article presents an overview of ReSTIR/ReGIR, explaining similarities and differences between ...
-
let's talk about normals
- the article presents the difference between Object Normals, Tangent Normals as well as World Norma...
-
Mesh Shaders and Meshlet Culling in Metal 3
- the article presents an overview of use cases for mesh shaders
-
You Can Use Vulkan Without Pipelines Today
- the blog post introduces the VK_EXT_shader_object extension that allows Vulkan to be used without ...
-
A Generalized Ray Formulation For Wave-Optics Rendering
- the paper introduces a generalized ray concept into wave
-
Agility SDK 1.710.0-preview: GPU Upload Heaps and Non-normalized Sampling
- the new D3D12 SDK adds support for CPU and GPU shared heaps on iGPUs and GPUs with re
-
GM Shaders Mini: Derivatives
- the article explains what function derivatives are and how they are helpful in shaders
-
Practical Projective Geometric Algebra
- slides of the GDC talking covering Geometric Algebra have been released
-
[video] Coding Adventure: Ray Tracing
- the detailed video tutorial shows how to implement raytracing applications
-
PIX and ID3D12ManualWriteTrackingResource
- the new API allows applications to disable the use of kernel WRITE_WATCH for CPU
-
GDC 2023: Introducing the FidelityFX SDK with new technologies, an early look at FSR ...
- AMD released the videos and slides from the sponsored session at GDC23
-
Real-time sparse distance fields for games
- the presentation introduces the implementation of Brixelizer, an AMD real
-
Introduction to Spherical Gaussians
- the article introduces Spherical Gaussians based on the Spherical Harmonics covered in the last pa...
-
DNND 2: Tensors and Convolution
- the second article of the series continues uncovering how Deep Neural Networks are implemented
-
[video] Geomipmapping // Terrain Rendering episode #6
- the terrain video tutorial series introduces a continuous level of detail for geometric details
-
Raytracing on AMD’s RDNA 2/3, and Nvidia’s Turing and Pascal
- the article uses the AMD and Nvidia dev tools to take a look at how they approach the BVH building...
-
Half baked: Dynamic Occlusion Culling
- the blog post discusses designs and considerations for occlusion Culling techniques
-
Leveraging Rust and the GPU to render user interfaces at 120 FPS
- the article discusses the implementation of the GPUI library
-
CPU->GPU data transfer - What is the best way to provide GPU the data inputs for each...
- the Twitter thread discusses different methods to upload per
-
Notes on FFTs: for users
- the article presents different use cases of Fourier Transforms from a user perspective
-
[Video] Iridescent Bubble Shader - Advanced Materials - Episode 18
- the video tutorial explains the effect of iridescence, why it happens, and how to replicate it
-
[Unreal] GameCube-Style Stencil Lights
- the article discusses how to implement a lighting model as found in the Legend of Zelda: The Wind ...
-
DNND 1: a Deep Neural Network Dive
- the article discusses the basics of Convolutional Neural Networks
-
Depth-only Screen Space Ambient Occlusion (SSAO) for Forward Renderers
- the article shows how to implement SSAO using WebGL 2
-
Stylized Water Shader
- the tutorial explains how to create a Stylized Water Shader using Unity from start to finish
-
Generalization of Adobe's Fresnel Model
- the short paper presents an extension to the Adobe Standard Material model that allows specific re...
-
Introduction to Spherical Harmonics
- the article aims to provide an understanding of Spherical Harmonics without requiring advanced mat...
-
[video] Sharp Text Shader - Advanced Materials - Episode 18
- the video tutorial shows how to create a text shader using signed distance fields and how to devel...
-
The Year of the Vulkan Book
- the article discusses the author's experience of writing "Mastering Graphics Programming with Vulk...
-
Vectors, Matrices & Matrix Order
- the article discusses matrix and vector representation
-
Float Compression 7: More Filtering Optimization
- the article continues the series on float compression topics
-
PIX 2303.02: You asked, we listened! A bumper PIX release
- new release of PIX contains a vast list of new developments
-
Understanding Vulkan device buffer address alignment
- the article explains the alignment requirements of buffer loads from VK_KHR_buffer_device_address
-
Real-time Cluster Path Tracing for Remote Rendering
- the presentation covers a real-time cluster-based path
-
[video] Simple Lighting in Defold - Screen Space Light Maps
- the video tutorial presents a simple lighting model that uses sprites to define light effects
-
Vulkan all the way: Transitioning to a modern low-level graphics API in academia
- the paper explains the experience of transitioning university classes to be taught using Vulkan in...
-
[video] How to Improve Shader Performance by Resolving LDC Divergence
- the video discusses the problem of non-uniform constant loads within a single wrap
-
CUDA LOD Generation
- the paper presents how to use GPU-based techniques to implement LOD construction of point clouds
-
[video] Lighting // Terrain Rendering episode #5
- the latest part of the video tutorial discusses how to apply lighting to a terrain using OpenGL
-
How to render it. Ten ideas to solve Computer Graphics problems.
- the article presents an overview of 10 aspects to consider when approaching solving a computer gra...
-
Setting up a bindless rendering pipeline
- the talk describes to setup a bindless rendering pipeline using Vulkan, D3D12, and HLSL shaders
-
Reading Veach’s Thesis, Part 2
- the article continues a series of understanding the Robust Monte Carlo Methods for Light Transport...
-
Two-pass Gaussian blur coeffifients generator
- the article provides a calculator that generates offsets and weights for a separable Gaussian blur...
-
WebGPU Error Handling best practices
- the article describes the error handling techniques that are available when using WebGPU
-
Vulkanised 2023
- the official website collects the links to the videos and slides of the talks presented at the Vul...
-
An Open Letter to ARM / Mali: Please stop doing this
- the article presents issues with the ARM/mali GPU device IDs and how they relate to GPU performanc...
-
Impressions from Vulkanised 2023 Conference
- the author presents his impression from the Vulkanied conference
-
[video] Vulkanised 2023
- the playlist of video recordings of the talks presented at the Vulkanised 2023 in Munich
-
Teardown Teardown
- the article presents a breakdown of how Teardown is being rendered
-
Swapping Colours
- the article provides an overview of different techniques to adjust object colors from objects
-
[video] Calculating Ray-Sphere Intersections
- the video tutorial explains how to implement ray-sphere intersection testing
-
Fast Real-Time Shading for Polygonal Hair
- the paper presents a technique to approximate hair lighted by an environment map, direct lighting,...
-
Float Compression 6: Filtering Optimization
- the blog post continues the series on float compression techniques
-
[video] Parallax Occlusion Optimization - Advanced Materials - Episode 15
- the video discusses the difference between Parallax Occlusion and normal mapping
-
Screen Space Indirect Lighting with Visibility Bitmask
- the paper proposes an expansion of Horizon-based indirect illumination by using visibility bitmask...
-
Raymarching Clouds
- the post provides a walkthrough of how to implement raymarching for volumetric clouds
-
GM Shaders Mini: Blendmodes
- the short tutorial shows how to recreate photoshop blend modes using GLSL shader code
-
A fast and precise triangle rasterizer
- the article presents how to implement a software triangle rasterizer
-
Getting Started with Vulkan Compute Acceleration
- the tutorial explains the basics of compute shader usage with Vulkan by implementing a compu...
-
Technically Art: Issue 138 (11.02.2023)
- a collection of tech art tweets covering topics such as procedural modeling, volumetric motion blu...
-
[video] Texturing // Terrain Rendering episode #4
- the video tutorial explains how to apply textures to a terrain system
-
Float Compression 0: Intro
- the start of a series of blog posts that explores the space of compressing floating point data
-
GM Shaders Mini: Normal Maps
- short tutorial explains the concept of normal maps and how it influences the lighting computations...
-
Shader Tutorial: Subsurface Scattering
- the article explains how to create a shader in Unity that gives an object a subsurface scattering ...
-
Compute Shader thread index to 2D coordinate
- the blog post explains how to convert a one-dimension threadIndex from compute shader into a 2D co...
-
[video] Sand Shader - Advanced Materials - Episode 14
- the video tutorial shows how to adjust Unity and Unreal Shading models to be more fitting for Sand...
-
WebGL / WebGPU Jan 2023 meetup highlights
- the article presents a summary of what was discussed at the WebGL / WebGPU meetup
-
The Energy Distance as a Replacement for the Reconstruction Loss in Conditional GANs
- the paper presents an alternative way to deal with the instability of generative adversarial netwo...
-
PS2 Vector Unit Lighting on Shadowman2
- the article presents a look back at the Shadowman game implementation for the PS2
-
Teardown Frame Teardown - Rendering analysis
- the article presents a rendering analysis of the game Teardown
-
Accelerated Photon Mapping for Hardware-based Ray Tracing
- the paper presents how to take advantage of ray tracing hardware for progressive photon mapper
-
Bringing Nanite to Fortnite Battle Royale in Chapter 4
- the article explains updates required for Chapter 4 of Battle Royale
-
Introducing Compressonator v4.3
- the new release introduces support for the Brotli
-
[video] Image-based Lighting (IBL) of PBR Materials [Shaders Monthly #11]
- the video presents how to implement image-based lighting of the Cook
-
Infinite Quadtrees – Fractal Coordinates
- the article introduces the idea of expression quadtrees in terms of a collection of square grids
-
Lumen brings real-time global illumination to Fortnite Battle Royale Chapter 4
- the blog post describes what changes were required to make Lumen work in 60 FPS mode for the new s...
-
Virtual Shadow Maps in Fortnite Battle Royale Chapter 4
- the article explains the issue that needed to be solved for Virtual Shadow Maps at 60fps
-
[video] SIGGRAPH 2022 - Advances in Spatial Hashing
- the video explains how Spatial hashing applies to storing sparse spatial data
-
Fast, Near Lossless ‘Compression’ of Normal Floats
- the article explains a method to compress 32-bit floats into 24
-
High-Performance Graphics 2023 - Call for Participation
- the High-Performance Graphics 2023 conference is open for submissions
-
Announcing GFXReconstruct (v0.9.17) with DirectX®12 and DirectX® Raytracing support
- the article announces that the GFXReconstruct now supports D3D12 (previously was Vulkan only)
-
[video] Midpoint Displacement // Terrain Rendering episode 3
- the video explains a second technique to generate terrains taken from the Focus on 3D Terrain Prog...
-
Rotation with three shears
- the article shows how to rotate a 2D sprite using 3 shear operations
-
AMD RDNA™ 3 Instruction Set Architecture (ISA) reference guide is now available
- the new AMD hardware guide for RDNA3 has been released
-
Approximate projected bounds
- the article shows techniques implement conservative techniques to project bounding boxes and spher...
-
Use.GPU Goes Trad
- the article describes how the Use.GPU level of abstraction is continuing to evolve
-
Tangent Spaces and Diamond Encoding
- the article provides an overview of Tangen Space Encodings
-
Optimize Your Graphics with RenderDoc Meta Fork
- the article presents the Meta Quest exclusive features of the RenderDoc fork
-
An Introduction to Vulkan: A Full Day Tutorial
- during the Vulkanised 2023 conference in Munich, a full
-
Water Wave Simulation
- the article aims to develop an intuition for FFT (Fast Fourier Transform) and how it's underlying ...
-
Random thoughts after moving from GLSL to HLSL
- the author describes the personal experience with GLSL and HLSL gained through moving AnKi 3D betw...
-
Min/Max Buffer Precision Improvement
- the blog post explains how to improve the precision when encoding min
-
How to accelerate AI applications on RDNA 3 using WMMA
- the article covers how Wave Matrix Multiply Accumulate (WMMA)
-
Practical Tips for Optimizing Ray Tracing
- the article provides techniques to speedup raytracing workloads
-
Let’s talk about (GPU) crashes
- the article presents a discussion of different sources of GPU hangs
-
[pptx] Deep Dive into FidelityFX Super Resolution 2
- the presentation contains a step-by-step walkthrough of the FSR implementation
-
Updates in d3dx12.h: Nuget Packaging, Header Bloat Reduction, and D3DX12GetCopyableFo...
- a new version of the D3D Agility SDK has been released
-
[video] Fault Formation // Terrain Rendering episode 2
- the video shows how to implement a Fault Formation algorithm for a procedural terrain using OpenGL...
-
[video] niagara: Culling optimization
- another part of the Vulkan series that implement GPU culling
-
Experimenting with fp16, part 2
- the blog post continues the discussion of the effects of using 16
-
Requiem for piet-gpu-hal
- the article discusses the reasoning why Vello (a GPU compute
-
Experimenting with fp16 in shaders
- The article discusses the use of 16-bit floating point numbers (fp16) in shaders
-
Improving color quantization heuristics
- the article discusses techniques for improving color quantization algorithms
-
Implement MacOS Monterey screen saver in shadertoy(less than 100 lines of code)
- the tutorial shows how to implement an effect that recreates the color and wave pattern of the scr...
-
Screen-space Variable Rate Shading in Unity with DirectX 12.
- The article discusses screen-space variable rate shading (VRS), a technique that can improve perfo...
-
Column Major and Row Major Vectors and Matrices (for games)
- the article explains the difference between row-major and column
-
[video] Hexagonal Tiling Explained!
- The video explains how to create a hexagon using SDFs in shadertoy
-
Unity Mobile Game Performance Optimization: Balance between Graphics Performance and ...
- the article discusses strategies for optimizing the performance of mobile games in Unity
-
Two-Pass Occlusion Culling
- the blog posts describes how Hierarchical Z-Buffer (HZB) Occlusion Culling uses a depth buffer to ...
-
Ghost of Tsushima SIGGRAPH Talks
- summary of two Siggraph talks by the author covering Ghost of Tsushima
-
Some News About the 4th Edition of Physically Based Rendering
- the post announces that the new edition of PBR will be released on March 28, 2023
-
[video] niagara: Triangle culling
- the stream covers the implementation and exploration of triangle culling into a GPU culling pipeli...
-
Path tracing workshop
- Intel released a Path tracing workshop of 76 minutes of videos and ShaderToy exercises
-
[video] Coding a Bezier curve from scratch!
- the video presents how to implement Bezier Interpolation
-
Introduction of the Raytracing Technology Part 2
- the article continues the series by covering an overview of raytracing techniques
-
Meshlet sizing theory
- the article presents metrics to calculate to judge the optimal size for meshlets
-
[video] Compute Shaders in Bevy
- the video presents how to integrate a compute shader into the Rust
-
Stream compaction using wave intrinsics
- the article presents how to use wave intrinsics to reduce the number of atomic operations required...
-
Introducing AMD Render Pipeline Shaders SDK
- This article provides an overview of the Render Pipeline SDK design and implementation
-
Introduction of the Raytracing Technology Part 1
- the article provides an overview and history of raytracing
-
[video] Heightmaps // Terrain Rendering episode 1
- the video is the start of a new video series to render a height map using OpenGL
-
[video] World Normal Mix Shader in Godot
- the video tutorial shows how to implement a shader in Godot that mixes two textures into a single ...
-
[video] CUDA 12 New Features and Beyond
- the video discusses new features in Cuda 12 and a look at future developemnts
-
GM Shaders Mini: Fluids
- the article presents a technique to improve the look of a particle based fluid system
-
Bringing Nvidia® and AMD support to oneAPI
- the article explains how the oneAPI API can be used to target intel, nvidia and AMD GPUs
-
Resolving Long Standing Issues with Vulkan Windowing System Integration (WSI)
- the blog post explains two new extensions that have been added to Vulkan to improve interaction wi...
-
Understanding The Math Behind ReStir DI
- the in-depth article explains the mathematics behind the original ReStir and an in
-
UE5.1 - New shading models and changing the GBuffer
- the article presents how to integrate a custom toon shading model into UE5.1
-
[video] Live Coding: 3d Truchet Weave
- the video presents a walkthrough of how to replicate a Truchet Weave pattern using ShaderToy
-
Fast CDF generation on the GPU for light picking
- the blog post explains how to build a cumulative distribution function (CDF) to accelerate the sam...
-
[video] The Continuity of Splines
- the detailed video explains splines and concepts derived/extended from these
-
[video] Shader Code and Maths to Node Graphs
- the presentation focuses on how to approach the implementation of abstract code/math expressions t...
-
ECCV 2022 Tutorial - Neural Volumetric Rendering for Computer Vision
- slides and videos for the Neural Volumetric Rendering for Computer Vision have been released
-
Behind the Pretty Frames: Death Stranding
- the article provides a detailed look into a frame breakdown from the Decima engine
-
MIPNet: Neural Normal-to-Anisotropic-Roughness MIP Mapping
- the paper presents a new method to calculate texture MIP maps that preserves compatibility with ex...
-
[video] How Big Budget AAA Games Render Clouds
- the video provides a summary of the cloud rendering techniques covered in Horizon: Zero Dawn and t...
-
Studying 'Spectral Primary Decomposition'
- the article continues the series on spectral rendering
-
[video] I Made a Game Entirely Within a Shader (almost) | Game Dev Challenge
- the video presents how the author developed a pong game using only a pixel shader in Unity
-
[video] How I Made The World with SINE
- the video focuses on the definition of a procedural terrain from a vertex shader
-
[video] [Episode 23] From Local to World Space (Model Matrix Transformation)
- the video is the latest part of an OpenGL learning series that focuses on the explanation of verte...
-
Shaders Explained: Dithering
- the article explains how two implements two different types of dithering in metal shaders
-
[video] Why Did Link's Cel Shading Disappear?
- the video does a deep dive into deferred shading techniques to explain why a graphical artifact in...
-
Announcing ComputeSharp 2.0 — run C# on the GPU with ease through DirectX 12 and D2D1...
- the article presents the library that allows C# code to be executed via HLSL, D2D1, XAML, and more...
-
How to make Sage's ice wall ability from Valorant
- the tutorial explains how to create an ice wall VFX inspired from the game Valorant in Godot
-
Technically Art: Issue 135 (25.11.2022)
- contains a collection of tweets covering procedural texturing with MaterialX, shader VFX examples
-
[video] Car Paint Shader - Advanced Materials - Episode 9
- the video tutorial presents several techniques for creating a car paint shader
-
Shader Reflection using the DirectX Shader Compiler
- the article presents how to use the DXC library to compile and gather information from compiled D3...
-
Brotli-G: An open-source compression/decompression standard for digital assets that i...
- AMD introduces a GPU-compatible implementation of the Brotli lossless compression algorithm
-
Introduction of the ASTC Texture Compression
- the article provides an overview of the different ASTC Texture Compression formats available
-
[video] But what is a convolution?
- the video provides a great visual explanation of convolution filters
-
Spherical Elevation Adjusting Arbitrary Normals
- the article explains how to offset normals along spheres so that displacement doesn't cause self
-
Radeon™ Raytracing Analyzer source code available + meet amdrdf
- the AMD Radeon Raytracing Analyzer has been open-sourced
-
Agility SDK 1.608.0: Enhanced Barriers and more
- new agility SDK release contains Enhanced Barriers (no longer in preview SDK, removing the need fo...
-
VK_EXT_descriptor_buffer
- new Vulkan proposal outlines improvements to the management of descriptor memory
-
[video] GCAP22 Highlights: Expert Level Debugging
- the presentation provides an overview of x64 assembly
-
AMD lab notes
- the series of blog posts aimed to share the lessons learned from tuning applications for AMD GPUs
-
Decompiling Nvidia shaders, and optimizing
- the article presents how to decompile NVidia OpenGL and Vulkan shader
-
Technically Art: Issue 134 (18.11.2022)
- a collection of tweets covering a flood filling, VFX breakdowns, unit shader books
-
[video] Metal Shader - Advanced Materials - Episode 7
- the video tutorial explains how to create a metal material
-
BC1 Compression Revisited
- the article describes how to compress high-quality BC1 images efficiently
-
Accelerating Load Times for DirectX Games and Apps with GDeflate for DirectStorage
- the article presents an overview of GPU-based GDeflate compression
-
Graphics API secrets: format casting
- the article presents the API rules for casting between texture formats in both Vulkan and D3D12
-
GPU submission strategies
- the presentation shows how submitting/recording commands lists from the API to the GPU affects per...
-
Triplanar, Dithered Triplanar, and Biplanar Mapping in Unreal
- the article provides an overview of the implementation of three different techniques for procedura...
-
[video] Physically Based Rendering // Intermediate OpenGL Series
- the video provides an overview of a Physically Based shading model
-
Bindless rendering — validation
- the blog post describes the design of a validation system for bindless shader resource access
-
[video] SIGGRAPH 2022 Real-Time Live!
- recording of the Siggraph showcase of original, interactive projects of the year
-
Nubis, Evolved: Real-Time Volumetric Clouds for Skies, Environments, and VFX
- the slides for the Real-Time Volumetric Clouds of Horizon Zero West from SIGGRAPH have been releas...
-
[video] Deferred Lights - Pixel Renderer Devlog #1
- the video explains the implementation of a 2D deferred shading system
-
GM Shaders Mini: Noise 2
- the article explains how to generate Worley, Voronoi, and fractal noise in a GLSLS shader
-
[video] Global Lecture with Ed Catmull - The Wild, Unexpected, Exponential Ride Throu...
- the lecture presents an overview of computer-graphics technology of the last 50 years as experienc...
-
GM Shaders Mini: Noise
- the tutorial covers how to generate different noise type in shaders
-
[video] Shader Sauce: How to Use Shaders to Create Stylized VFX
- the video talk introduces a collection of fundamental shader concepts and tricks aimed at the crea...
-
Vector text rendering in Unreal Engine
- the article covers how to extend UE4 with a custom vertex format and shading pass
-
[video] Investigating and Dispelling Shader Myths... with Science!
- the talk presents a set of common misconceptions about shader code patterns
-
Write your first GPU Kernel using Metal
- the tutorial explains the basic steps required to execute a metal compute shader kernel
-
Unreal Engine Game Optimization on a Budget
- the presentation provides an overview of essential concepts when optimizing an Unreal Engine game
-
MeshTaichi: A Compiler for Efficient Mesh-based Operations (SIGGRAPH Asia 2022)
- the paper presents a mesh computation compiler that separates mesh operations from the data partit...
-
[video] ICC Colour Profiles, AdobeRGB & sRGB, and \"Colour Management\" on Windows. T...
- the video shows the importance of color profiles
-
[video] Intel’s New AI: Amazing Ray Tracing Results!
- the video presents a new upsampling technique developed by intel (Temporally Stable Real
-
Shader Tutorial: Enter The Matrix
- the tutorial presents how to rotate a texture in 2D space
-
Low Discrepancy Color Sequences
- the article describes a possible solution to generate a color palette with neighboring colors bein...
-
Performance Comparison of Bounding Volume Hierarchies for GPU Ray Tracing
- the paper presents a comparison of a large number of methods for the construction of BVHs for ray ...
-
FSR 2.1 UE plugin enhancements part 1: Intro & improving foliage appearance using the...
- the 5 part series provides a walkthrough of common issues when using the FSR 2.0 upscaler in Unrea...
-
binary search for sdfs - 2018, 2022
- the article presents the story of how the author experimented with binary search in a shader for a...
-
Godot SDFGI - Solving the accessible Global Illumination problem in Godot
- the slides discussing the new GI solution implemented for Godot
-
Opening HLSL Planning
- the blog post announces that a new, more open model for HLSL language development
-
SIGGRAPH Asia 2022 papers on the web
- a collection of papers from SIGGRAPH Asia 2022 - the list is updated every couple of days at this ...
-
Snowy Rock Shader - Advanced Materials - Episode 4
- the video shader tutorial series covers how to create a shader that allows procedural rock shading...
-
GI-1.0: A Fast Scalable Two-Level Radiance Caching Scheme for Real-Time Global Illumi...
- the AMD paper presents the findings for a new dynamic GI solution
-
stanford - Computer Science cheatsheets
- a collection of cheatsheets on the high-level concepts of topics such as AI, machine learning, and...
-
Ray Tracing: How NVIDIA Solved the Impossible!
- the video presents a history of light transport algorithms development
-
Emulating Double Precision on the GPU to Render Large Worlds
- the article presents that the Godot engine supports compilation in double
-
My mesh shaders talk at XDC 2022
- the blog post provides the text version of the mesh shader talk presented
-
Better outline rendering using surface IDs with WebGL
- the article presents how to improve an outline rendering technique by using surface IDs instead of...
-
Improve Shader Performance and In-Game Frame Rates with Shader Execution Reordering
- the article presents how the Nvidia hardware feature Shader Execution Reordering (SER) can be leve...
-
Transparent and Crystal Clear: Writing Unity URP Shaders with Code, Part 3
- the article (and video) explains how to author and integrate shaders with transparency support for...
-
DirectStorage 1.1 Coming Soon
- the article presents that the next DirectStorage release will start to support GPU
-
[video] Sparkling Snow Shader - Advanced Materials - Episode 2
- the video tutorial series covers how to build a complex rock shader
-
Intel® Arc™ Graphics Developer Guide for Real-Time Ray Tracing in Games
- the Developer Guide provides a functional description of Intel’s hardware ray
-
Upscale SDK comparison
- the blog post provides a comparison of DLSS 2.4, FSR 2.1.1, and Intel XeSS upscaling techniques
-
[video] What is NVIDIA DLSS 3? | The Performance Multiplier
- the video provides a high-level explanation of the DLSS 3 system
-
Lighting Test for Unreal Engine 5
- a collection of simple test scenes for light conditions in UE5 and NVIDIA Falcor 5.2 Mogwai path t...
-
My take on shaders: Compute shaders
- the article presents how to implement a compute shader that can be used to paint on vertex meshes ...
-
[video] How to blend skeletal animations // Intermediate OpenGL Series
- the video explains how to implement blending between two skeletal animations
-
Post-Processing – In-Depth Camera Distortion Effects
- the article provides examples of different camera distortion effects (with code examples)
-
PIX 2210.10-preview: Initial support for Preview Agility SDK v706
- PIX adds a separate preview branch of the tool that supports the Preview Agility SDKs
-
[video] How Ray Tracing (Modern CGI) Works And How To Do It 600x Faster
- the video provides a walkthrough of ray tracing fundamentals
-
Progressive Material Caching
- the paper introduces a progressive technique to cache material evaluations at runtime
-
On AlphaTensor’s new matrix multiplication algorithms
- the article discusses recent AlphaTensor’s discovery on matrix multiplication
-
Real-time distance field builder twitter thread
- the Twitter thread summarises the real-time distance field generator used by AMD research work
-
Fused BVH to Ray Trace Level of Detail Meshes
- the paper presents a method to extend a mesh BVH with additional data so that it can be shared bet...
-
Combining GPU Tracing Methods within a Single Ray Query
- the paper presents a method that combines distance field tracing with hardware ray tracing
-
Technically Art: Issue 128 (07.10.2022)
- a collection of Twitter posts about a large variety of tech artist topics
-
Notes about Nanite in UE5.1 preview
- the article presents an overview of ongoing Nanite developments the developer noticed in the UE5.1...
-
Simulating Wind on Procedural Terrain using GPU Accelerated Lattice Boltzmann Method
- the blog post discusses a numerical method for fluid flow to simulate wind flow over terrain
-
Notes on screenspace reflections with FidelityFx SSSR
- the article provides an overview of the implementation underlying AMDs' FidelityFx screen space re...
-
[video] Introduction to Raytracing with the Radeon Developer Tools Suite
- the video provides an introduction to the AMD raytracing tool
-
Screen Post-processing Effects: Gamma Space and Linear Space
- the article provides a summary of two plots for the existence of gamma space related to CRT and hu...
-
Screen Post-processing Effects: Color Models and Color Grading
- the article discusses the RGB and HSV color spaces
-
[video] An In-Depth look at Lerp, Smoothstep, and Shaping Functions
- the video presents visual explanations of lerp (linear interpolation)
-
Bindless Rendering in DirectX12 and SM6.6
- the blog post provides an introduction level guide to using the D3D12 bindless model
-
An Algorithm for Polygon Intersections
- the article presents how to calculate the intersection between axis
-
[video] Nvidia DLSS 3 on RTX 4090 - Exclusive First Look - 4K 120FPS and Beyond
- the video explains how DLSS uses motion vectors and optical flow fields to implement AI Frame Gene...
-
Vulkanised conference - call for submissions
- the 2023 Vulkanised conference has been announced for in
-
Intel(R) Xe Super Sampling (XeSS) SDK
- Intel has released the SDK for the XeSS upscaler
-
Ray Tracing of Signed Distance Function Grids
- the paper presents a comparison of traversal and voxel intersection testing of signed distance fun...
-
Color-Perception-Guided Display Power Reduction for Virtual Reality
- the paper presents a method designed for VR applications that adjust colors to reduce display colo...
-
Animation Retargeting
- the blog post provides a method to allow the retargeting of animations between models that share a...
-
[video] Post Process VHS Filter Part 3 - Shader Graph Basics - Episode 62
- the video tutorial presents how to implement a noise that recreates the interference of unshielded...
-
Advances in Real-Time Rendering in Games 2022
- the slides for the Siggraph 2022 Advances in Real
-
Quaternions: a geometrical interpretation.
- the article presents a visual interpretation of Quaternion mathematics
-
[video] Easily Remaster Classic Games with NVIDIA RTX Remix
- the video introduces the NVIDIA RTX Remix engine
-
[video] Soft Shadows - PCF & Random Sampling // OpenGL Advanced Rendering Series
- the video tutorial explains how to improve an OpenGL shadow mapping implementation to allow softer...
-
Improving raytracing performance with the Radeon Raytracing Analyzer (RRA)
- the post provides insights into ray tracing BVH performance
-
Vulkan Render-Queues and how they Sync
- the article presents how a render graph gets updated to handle exclusive resource ownership betwee...
-
[video] SIGGRAPH 2022 Talk - A Fast & Robust Solution for Cubic & Higher-Order Polyno...
- the video presentation provides a walkthrough of methods to find the real roots of polynomials
-
Defeat Banding – Part II
- the article discusses a method to detect artifacts in video
-
[video] Pixelation Filter - Shader Graph Basics - Episode 61
- the video tutorial presents how to create a fullscreen post
-
Fast Post-Processing on the Oculus Quest and Unity
- a short article that shows an option to apply tone mapping in forward shading without wanting to u...
-
Screen Post-processing Effects: Depth of Field (DOF) and Its Implementation
- the article provides an overview of depth of field effects
-
[video] Practical Skeletal Animation // Intermediate OpenGL Series
- the video tutorial provides a walkthrough of issues in supporting animated models
-
Visualizing General Relativity
- the article explains a method to simulate and render different warped space
-
Rendering my balls in a fragment shader
- the blog post provides a walkthrough of how to render 2D billiard balls in a pixel shader
-
Parallel curves of cubic Béziers
- the article describes a method to generate a cubic Bézier curve that is parallel with a defined of...
-
Improving Vulkan graphics state tracking in Mesa
- the article discusses how API pipeline state maps onto different hardware types
-
Technically Art: Issue 124 (9.09.2022)
- a collection of tweets about tech art, VFX, and related topics
-
Gradient-descent optimized recursive filters for deconvolution / deblurring
- the post discusses infinite impulse response (IIR filter)
-
[video] Post Process VHS Filter Part 2 - Shader Graph Basics - Episode 60
- the second video of the series VHS filter series adds support for worn
-
[video] Ray Marching, and making 3D Worlds with Math
- the short video provides a great visual introduction to distance functions and ray marching
-
Lighting participating media with thousands of lights
- the article shows the Grid-Based Reservoirs sampling technique for dynamic lights in participating...
-
Mesh Shading for Vulkan
- mesh shader support has been added to Vulkan through VK_EXT_mesh_shader
-
[video] Intel Arc Graphics | Intel Arc A-Series Graphics Ray Tracing Technology Deep ...
- the video starts with a visual overview of rasterization, raytracing, and hybrid rendering techniq...
-
Progressive image stippling and greedy blue noise importance sampling
- the article presents a method to generate Progressive blue noise samples that follow the image con...
-
[video] Post Process VHS Filter - Shader Graph Basics - Episode 59
- the video presents how to implement two VHS effects, interlacing lines and YIQ color grading, in a...
-
Compressing global illumination with neural networks
- the blog presents the idea of using a simple neural network to encode diffuse indirect light for a...
-
[archive] Practical Aspects of Spectral Data in Digital Content Production - SIGGRAPH...
- second year of the spectral rendering Siggraph course
-
Technically Art: Issue 123 (2.09.2022)
- a collection of tweets about tech art, VFX, and related topics
-
Barycentric Quad Rasterization
- presents why and when a quad is being drawn as two triangles can cause discontinuities along the e...
-
Practical Real-Time Hex-Tiling
- the paper introduces an adaptation of the Heitz and Neyret texture tiling technique
-
Clip control on the Apple GPU
- the blog post provides an insight into how the apple metal driver is separated into components
-
[video] Creating an Outline Effect as a Post-Process in Unity
- the video tutorial explains how to implement an outline effect in Unity
-
HPG 2022 Keynote: The Journey to Nanite - Brian Karis, Epic Games
- the talk discusses the issues artist encounter and how Nanite goals are designed to resolve them
-
CoG 2022: Automatic Testing and Validation of LoD Reductions Through Supervised Learn...
- the paper introduces two convolutional neural networks (CNN) based techniques that can detect LOD ...
-
The GPU Banana Stand
- the article presents an overview of the composable declarative GPU authoring
-
My personal hell of translating DXIL to SPIR-V – finale
- the article continues the series of translating DXIL to SPIR
-
Exploring Shaders with Compiler Explorer
- the article presents how to integrate new compilers into the compiler explorer infrastructure (whi...
-
[video] Let There Be Light (And Shadow) | Writing Unity URP Code Shaders Tutorial [2/...
- the video tutorial presents how to write universal rendering pipeline shaders in HLSL
-
Deconstructing Bézier curves
- the article explains the underlying theory for Bézier curves and shows how the different component...
-
Journey to Lumen
- the article discusses the different approaches that were tried during the development of lumen
-
[video] Resampled Importance Sampling: Foundations of ReSTIR
- the video presents the foundation how to general ReSTIR sampling
-
[video] Coding a crazy weave pattern
- the video shows how to implement a Truchet effect using shadertoy
-
Lightweight Multidimensional Adaptive Sampling for GPU Ray Tracing
- the paper presents how to adapt multidimensional adaptive sampling for interactive real
-
[video] Fog Rendering - Part 2 // 'ShaderX2 In Practice' series
- the OpenGL fog rendering series extends the previous works and implements Layered and animated fog...
-
[video] Post Process Cartoon Outlines - Shader Graph Basics - Episode 57
- the video tutorial shows how to implement cartoon outlines in screen space
-
NVIDIA Announces Full Open Source of Material Definition Language to Streamline Graph...
- Nvidia open-sources MDL distiller and the GLSL backend
-
Physically Based: a Database of PBR Values for Real-World Materials
- A database of physically based values for CG artists (materials, Light Sources, Cameras)
-
PIX 2208.10: SM 6.7 support, GPU and Timing Capture Improvements
- new PIX release allows profiling to target different GPU clock rates (controlled by the hardware m...
-
Using performance budgets in the Timing Capture metrics view
- the post explains how to set up budgets for pix metrics
-
Screen Post Processing Effects Chapter 1 – Basic Algorithm of Gaussian Blur and Its I...
- the article explains the theory of a Gaussian blur algorithm
-
Descriptors are hard
- the article presents a description of the texture/buffer/sampler binding model supported by differ...
-
Real-Time Path Tracing and Beyond
- the presentation provides a brief overview of the implementation details for the Nvidia path trace...
-
Beyond Linear Perspective: Art, Human Vision, and Computer Graphics
- discusses the limitations of linear perspective and how classical artists rarely used it
-
Explosion Decals
- the article presents a technique to generate explosion decals aimed at a 3D topdown game
-
[video] Bloom & Glow Post Process Effect - Shader Graph Basics - Episode 56
- video tutorial shows how to implement a bloom effect using Unreal and Unity shader graphs
-
High-Performance Graphics 2022
- the program has been updated with links to the recording of all talks
-
Vertex packing
- the article describes the trade-offs between storing vertex information in a single buffer compare...
-
Paper Digest: SIGGRAPH 2022 Highlights
- a collection of papers presented at SIGGRAPH 2022 with a one
-
Comparison of single image HDR reconstruction methods — the caveats of quality assess...
- the paper presents that common image metrics are not a great metric to detect the subjective quali...
-
[video] Microfacet BRDF: Theory and Implementation of Basic PBR Materials [Shaders Mo...
- the video shows how to implement the Cook-Torrance microfacet BRDF
-
HLSL Shader Model 6.7
- the spec for the new features of shader model 6.7 has been released
-
Shaders Explained: Gradients
- the article presents how to write a metal shader to generate a 1D gradient
-
Porting AnKi to Android… again after ~8 years
- the article contains a small overview of steps taken to port the AnKi engine to support Android
-
[video] Fog Rendering - Part 1 // ShaderX2 In Practice Series
- the video tutorial presents how to implement 3 different methods of distance fogs from the ShaderX...
-
[video] Compute Shaders || Lou Kramer || AMD
- the presentation introduces compute-shaders, explaining the software and hardware concepts
-
Introducing our brand new tool: Radeon™ Raytracing Analyzer 1.0
- new tool from AMD to provide more insights into the performance of raytracing applications
-
Synchronizing Present Calls Between Applications on Distributed Systems with DirectX ...
- the article presents an Nvidia API extension that allows multiple buffer swaps (between windows an...
-
Best Practices for Using NVIDIA RTX Ray Tracing (Updated)
- Nvidia has updated the performance best practices for RTX usage
-
GPU Memory Pools in D3D12
- the detailed article explains the different memory pools available and how they differ between dif...
-
A Rust shading language EDSL
- the article discusses the Rust shades crate that allows writing Rust domain
-
A better point light attenuation function
- the article presents a derivation of a light attenuation function to separately control the maximu...
-
UVs and You
- the article aimed at beginners explains how images are applied to 3D objects
-
GL_EXT_fragment_shader_barycentric: Wireframe
- the article presents an overview of barycentric coordinates
-
Adventures in Text Rendering: Kerning and Glyph Atlases
- the article provides an overview of font rendering
-
[video] Generation of simplified representations of the city, characters and vehicles...
- the presentation video discusses the LOD generation used in Cyberpunk 2077 (3D models and material...
-
Adventures with deferred texturing in horizon forbidden west
- slides for the GDC presentation talking about the deferred texturing solution has been released
-
zig-gamedev project
- a growing collection of graphics samples and libraries for the zig programming language
-
Efficently rendering glTF models
- the article discusses how to load and process glTF models for efficient execution
-
Behind the Pretty Frames: Resident Evil
- a super detailed analysis of the RE Engine used by Resident Evil
-
[video] Shadow Mapping Unleashed! // Intermediate OpenGL Series
- the video tutorial explains common shadow problems and why they occur
-
High Performance Graphics 2022 papers on the web
- list of papers presented at High-Performance Graphics 2022
-
[video] Rain Drips On The Lens Post-Process Effect - Shader Graph Basics - Episode 54
- the video tutorial presents how to implement a fullscreen camera space rain effect
-
[video] Spartan Engine Livestream #2: FSR 2.0 Integration
- the stream shows a practical example of how to implement FSR 2.0 into the authors' personal engine...
-
Swallowing the elephant into Blender
- collecting of optimizations done to reduce the Moana USD scene import time into Blender from 3 hou...
-
Some SIGGRAPH 2022 Info
- a collection of advice for SIGGRAPH 2022 (virtual) attendees
-
Performance Boosts and Enhanced Features in New Nsight Graphics, Nsight Aftermath Rel...
- article presents improvements in the new Nsight and Aftermath releases
-
[video] Procedural Grass in 'Ghost of Tsushima'
- the GDC presentation covers how the grass is procedurally generated in compute shaders
-
Order independent transparency: endgame
- the article presents a couple additional order-independent transparency algorithms
-
Advanced API Performance: SetStablePowerState
- Nvidia presents best practices to achieve stable performance results on NVIDIA hardware
-
[video] HPG 2022 Monday, Day 1 (enhanced)
- the video recording of the first day of the High
-
Agility SDK 1.606.3: Shader Model 6.7 is now publicly available!
- the article focuses on the new capabilities added in shader model 6.7
-
Preview Agility SDK 1.706.3-preview: SM 6.7, Enhanced Barriers and more
- a new preview of the Agility SDK improves the enhanced barrier API support, significantly better d...
-
AMD support for Shader Model 6.7 and enhanced barriers in the Agility SDK
- a brief summary of the main features of shader model 6.7 and what is supported by the new AMD pre
-
[video] How do you use shaders to dissolve a sphere?
- the video shows how to implement a custom material into the Rust
-
Creating a physically-based path tracer
- the article presents a brief overview of techniques that can be used to upgrade a simple raytracer...
-
Space Rangers with Cornrows
- the short paper presents the Pixar technique for Modeling Braids and Curls
-
EGSR 2022 Presentation – Generalized Decoupled Shading
- the paper discusses a decoupled shading implementation that separates rasterization from shading b...
-
Spatiotemporal Blue Noise Masks
- the paper presents how to generate multiple 2D blue noise textures so that the blue noise is both ...
-
[video] Vulkan 1.3 explained
- the 4-hour video stream discusses the evolution of the Vulkan API
-
Temporally Stable Real-Time Joint Neural Denoising and Supersampling
- the paper presents a neural network architecture that allows both denoising and supersampling to b...
-
GPU-Driven Real-Time Mesh Contour Vectorization
- the paper presents a new GPU-based method to generate 2D contour strokes from 3D meshes
-
Volume Rendering for Developers: Foundations
- the lesson provides the foundations of ray marching through a volume
-
Advanced Rendering Research Group at AMD
- the new home for the AMD research team - provides a collection of publications, projects, presenta...
-
Getting Started With DirectX Raytracing
- the post provides a walkthrough of all the D3D12 elements that are involved in getting started wit...
-
Planetary Shadow-Aware Distance Sampling
- the paper introduces a visibility-aware transmittance sampling technique for rendering atmospheric...
-
Order independent transparency, part 2
- the second part of the blog series that talks about order independence transparency
-
Seperation of mesh types
- the Twitter thread discusses the terminology that applies to meshes
-
[video] Creating Portals in Unreal for Psychonauts 2
- the Xfest presentation discusses the portal implementation for Psychonauts 2
-
Single-pass stratified importance resampling
- the paper presents a new method for stratified resampling
-
[video] Giving Personality to Procedural Animations using Math
- the video presents how to use second-order systems to allow dynamic motion control in procedural a...
-
Fog for Top-Down Games
- the article presents how to combine multiple tricks to create the appearance of volumetric fog
-
Advances in Real-Time Rendering in Games - 2022
- overview of the talks that will be presented at the Advances course as part of Siggraph 2022
-
Advanced API Performance: Vulkan Clearing and Presenting
- the article presents Nvidia's best practices for clearing textures and depth buffers
-
[video] Underwater Post-Process Effect - Shader Graph Basics - Episode 52
- the video tutorial presents how to create a post-processing effect that simulates an underwater lo...
-
Icosphere From Octahedron to Icosahedron
- the article presents how to generate a procedural Icosahedron mesh
-
Boosting Application Performance with GPU Memory Access Tuning
- the article presents how to improve compute shader performance when workloads are memory limited
-
Order independent transparency, Part 1
- the article presents how to use per-pixel linked lists to implement order
-
Physical Units for Lights
- the article presents a discussion of the different physical Units used for light description
-
Comparing BCn texture decoders
- the article compares BC decompression libraries - compares the level of format support, decoding p...
-
DirectML Plugin for TensorFlow 2 is here
- the blog posts announce the release of a first preview of the DirectML backend for the TensorFlow ...
-
It’s time to see the FSR 2 source code!
- AMD released FidelityFX™ Super Resolution 2 (FSR2) to the public
-
Khronos cross-vendor mesh shader extension update
- Khronos is sharing the first details about what the cross
-
[video] NVIDIA’s Ray Tracer: Wow, They Nailed It Again!
- the paper presents an overview of the NVidia Fast Volume Rendering with Spatiotemporal Reservoir R...
-
How to build a BVH – part 9b: Massive
- the last part of the series covers how to extend the ray
-
[video] What is 'Filmic' and how to fix broken digital photography. Part 1.
- the video discusses the importance of color transformations to final images
-
The Case for Use.GPU - Reinventing rendering one shader at a time
- the article presents work done to make GPU operations reactive, declarative, and composable and re...
-
[video] 16 - Simulation on the GPU
- the video explains how to implement a positional-based cloth simulation on the GPU
-
[video] Fullscreen Masks - Shader Graph Basics - Episode 50
- the video shows to create 3 types of fullscreen masks (square
-
Zero-waste single-pass packing of power-of-two textures
- the article presents a method to pack individual power
-
[video] Shadow Mapping Strikes Back // Intermediate OpenGL Series
- the video tutorial explains how to use an orthographic projection to implement directional light s...
-
The latest Vulkan SDK now ships with Vulkan Memory Allocator (VMA)
- the Vulkan Memory Allocator is now included as an optional component in the Vulkan SDK
-
Real-time rendering - past, present and a probable future.
- the article presents an overview of the problems and solutions of real
-
A Gentle Introduction to D3D12 (2022)
- the article introduces D3D12Lite, a library that is meant to streamline the introduction to D3D12
-
QMC(Magic square, Glois field, QMC)
- the article presents a method to generate stratified samples of arbitrary dimensionality
-
WWDC22 - Metal sessions
- list of all metal sessions at WWDC22 - covering new metal features, HDR/EDR handling, bindless res...
-
Writing Unity URP Shaders with Code Part 1: The Graphics Pipeline and You
- the text and video tutorial is the start of a new beginner
-
[video] Basic Post-Processing Effects - Shader Graph Basics - Episode 49
- the video tutorial shows the steps required to set up to create post
-
[video] God of War PC: AMD FSR 2.0 vs Nvidia DLSS Image/ Motion Quality Face-Off
- the Digitial Foundry video provides an in-depth comparison between FSR 2.0, native TAA as well as ...
-
Bridging the synchronization gap on Linux
- the article discusses why the explicit synchronization nature of Vulkan is a significant problem o...
-
sRGB, Pre-Multiplied Alpha, and Compression
- the article clarifies the meaning of sRGB encoded textures
-
Overview of global illumination in kajiya renderer
- the article provides a high-level description of the techniques used
-
[video] SIGGRAPH 2022: Technical Papers Trailer
- video showing an overview of some of the papers to be presented at Siggraph 2022
-
How to build a BVH – part 9a: To the GPU
- the article presents the first part on how to convert a C++ raytracing kernel to OpenCL
-
[Twitter Thread] D3D12 - specialization constants
- the Twitter thread discusses a restricted version of specialization constants for D3D12 usage
-
An Idea for Visualization of Frame Times
- a short article that discusses some ideas to represent frame time in graphs
-
[video] Hex Grid Normal Tiling - Shader Graph Basics - Episode 48
- the video tutorial shows the issue when hex-tiling (as discussed in the previous part) is applied ...
-
OpenGL Introduction - GPU Computing
- a beginner level focused article that introduces OpenGL compute shaders
-
[video] NVIDIA Renders Millions of Light Sources!
- the video paper summary presents the ReSTIR introductory paper
-
[video] How to turn your 2d fractal into 3d!
- the video shows how to extend a 2D Koch curve SDF into 3D using shadertoy
-
Accelerating raytracing using software vrs
- the article presents how to use compute-shader based Variable Rate shading techniques to reduce th...
-
How to build a BVH – part 8: Whitted-Style
- the article extends the BVH constructed over the last couple of posts to implement a more complete...
-
Removing blur from images – deconvolution and using optimized simple filters
- the detailed post presents the basis knowledge required for a single image deconvolution (remove b...
-
PIX 2205.24: Unlocking Arm and Qualcomm development
- the blog post presents that PIX is now supported on Arm devices
-
Basic Shadow Mapping // Intermediate OpenGL Series
- the video tutorial presents how to implement shadow mapping using OpenGL
-
Meshlets and How to Shade Them: A Study on Texture-Space Shading
- the paper presents the idea of the usage of a meshlet atlas for texture space shading
-
WebGPU Buffer upload best practices
- the blog post describes the different methods WebGPU offers to upload data from the CPU to the GPU...
-
Behind the Pretty Frames: Elden Ring
- the article presents a frame breakdown of the PC version of Elden Ring
-
[video] The Road to Vulkan: Teaching Modern Low-Level APIs in Introductory Graphics C...
- the video provides a summary of the findings of teaching both OpenGL and Vulkan as part of the Int...
-
[video] Rust Graphics Meetup 2
- the second edition of the Rust graphics developer meetup
-
[video] Texture Tiling Without Repetition - Shader Graph Basics - Episode 47
- the video explains how to use hexagonal texture sampling/blending to create a shader that allows l...
-
DirectStorage speculations & myths
- the article shows what the DirectStorage API enables on PC
-
Permutation Coding for Vertex-Blend Attribute Compression
- 15 min video explaining the concept has been added
-
How to build a BVH – part 7: Consolidate
- the article expands the the previous BVH implementation with the necessary logic to support UV and...
-
[video] I3D 2022 Day 1 — Tuesday, May 3
- video recording of the I3D 2022 conference, all 3 days are available
-
[video] AMD's Ray Tracing Research
- the video provides a summary of AMD rayracing research
-
Advanced API Performance: Variable Rate Shading
- the article provides a brief overview of VRS modes available
-
Advanced API Performance: Clears
- the article presents performance advice from Nvidia for clear operations
-
Integrating VRS in The Riftbreaker
- the article discusses how the AMD FidelityFX Variable Shading library was integrated into The Rift...
-
Comparing .obj parse libraries
- the article compares several .obj parsers for loading speed and memory usage
-
Reading list on ReSTIR
- the post presents a list of articles/papers that discusses Reservoir
-
How to build a BVH – part 6: All Together Now
- the article expands the capabilities of the BVH construction to support a more significant number ...
-
[video] GPU Texture Compression
- the video shows a summary of block compressed formats and why they are a good fit for GPUs
-
[video] Vulkan Synchronization | Understand Fences, Semaphores, Barriers,... | Vulkan...
- the video lecture contains a detailed description of Vulkan Synchronization topics
-
Render Graph 101
- the article describes a how a system can derive execution order from rendered resource dependencie...
-
[video] Toon Shading & Rim Lighting // OpenGL Beginners Series
- the video tutorial explains the theory of toon shading and rim lighting effects
-
Derivatives in compute shader
- the article discusses how to calculate UV derivatives in compute
-
Let’s Stop Calling it GGX
- the blog post raises the point that GGX was introduced in a 1975 paper by Trowbridge and Reitz
-
How to build a BVH – part 5: TLAS & BLAS
- the article presents how to extend the BVH structure to allow multiple objects in the same structu...
-
High Performance Graphics 2022 - Student Competition
- the High-Performance Graphics conference is running a student contest
-
Various analytic expressions for collimated light scattered in fog (participating med...
- the article presents the underlying mathematical modeling commonly used to represent volumetric ef...
-
Efficiency-aware multiple importance sampling for bidirectional rendering algorithms
- the paper presents a method to adapt the set of sampling techniques in multi importance sampling t...
-
Sampling the hemisphere
- the blog post explains the derivations of importance sampling schemes for multiple functions
-
ReSTIR El-Cheapo
- the article presents the idea of using ReSTIR for a checkerboard style pattern for shadow ray gene...
-
Increasing wave coherence with ray binning
- the article presents the implementation of a ray-binning technique
-
Generalized Resampled Importance Sampling (GRIS)
- the paper introduces a generalized approach to resampled importance sampling for correlated sample...
-
[video] Sprite Batching In OpenGL // Uniform Buffer Objects
- the video shows how to pack sprites into a 2D texture atlas to reduce the number of draw calls req...
-
Faster Visibility Buffer/Deferred Material Rendering via Analytical Attribute Interpo...
- the post presents a method for reducing the size of visibility output buffers and the effect on pe...
-
How to build a BVH – part 4: Animation
- the article presents how to update a BVH tree for an animated mesh
-
Identifying Shader Limiters with the Shader Profiler in NVIDIA Nsight Graphics
- the article presents a walkthrough of how to use GPU Trace Analysis and GPU Profiler to identify p...
-
A Dataset and Explorer for 3D Signed Distance Functions
- the paper presents a database of 63 optimized and regularized SDF functions of varying complexity
-
A driver on the GPU
- the article discusses the complexities of implementing ExecuteIndirect from a driver's perspective...
-
[video] Using Ray Casting To Move 3D Objects
- the video on how to implement ray-casting from the cursor position into a 3D world to allow the mo...
-
Agility SDK 1.602.0
- the blog post presents the new capabilities of the agility SDK
-
Twitter Thread: Games for the original #PS1 had a unique visual look
- the thread explains the history of the PS1 hardware and how it defined the look of the games of th...
-
Windows Graphics News – 2022 Q1
- a collection of news from the graphics windows development world
-
Shader compiler tools
- the article presents an overview of the shader compilation pipeline in Wicked Engine
-
A remake of the famous Sponza scene for open, collaborative and reproducible research
- the Sponza rendering scene has been updated - it now contains 4K PBR texture sets and high
-
Dynamic, Noise Free, Screen Space Diffuse Global Illumination
- the article presents the screen space solution for Global Illumination
-
Compute shaders in graphics: Gaussian blur
- the article presents the authors' first experience with writing a compute shader to implement a Ga...
-
How to build a BVH – part 2: Faster Rays
- the article presents how to use a Surface Area Heuristic (SAH) to improve the quality of the BVH g...
-
Radeon™ GPU Profiler 1.13 and Radeon Developer Panel 2.6
- the article presents improvements to the new profiler version
-
How to build a BVH – part 3: Quick Builds
- the article presents how to reduce the time required for the presented BVH build from seconds to m...
-
Moving, Rotating, and Scaling UVs - Shader Graph Basics - Episode 43
- the video tutorial explains how to modify UVs from a shader graph in both Unity and Unreal Engine ...
-
Slang Shading Language Advances
- the talk presents the Slang Shading language - presents how generics and interfaces are implemente...
-
i3D 2022 - Program
- program for the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games has been released
-
Unreal Engine 5 Matrix City Sample PC Analysis: The Cost of Next-Gen Rendering
- the Digital Foundry video analyses the performance of the UE5 Engine
-
Modern OpenGL Tutorial - Tessellation Shaders
- the video provides an overview of tessellation shader concepts
-
My personal hell of translating DXIL to SPIR-V – part 5
- the article introduces standard terms and concepts used in compiler literature
-
Eurographics 2022 papers on the web
- a collection of papers to be presented at Eurographics 2022
-
Adventures with Deferred Texturing in 'Horizon Forbidden West'
- the GDC presentations talk about the implementation of the Deferred Texturing
-
Permutation Coding for Vertex-Blend Attribute Compression
- the paper presents a new approach to compressing vertex data at a fixed bit
-
My personal hell of translating DXIL to SPIR-V – part 4
- the article presents a detailed look at how different D3D12 ConstantBuffer patterns are mapped int...
-
Exponentially Better Rotations
- the article presents a summary of different methods to express rotations
-
[video] Taking the Slang Shading Language from Research to Production
- the video presents an overview of the challenges in shader development
-
Introducing HIP RT – a ray tracing library in HIP
- AMD released a library to enable applications that use Heterogeneous
-
How to build a BVH – Part 1: Basics
- the article describes how to construct a BVH from a collection of triangles
-
Bringing Linearly Transformed Cosines to Anisotropic GGX
- the paper introduces an LTC (Linearly Transformed Cosines) approximation to anisotropic GGX using ...
-
ReSTIR GI for Specular Bounces
- the blog posts demonstrate how to implement ReSTIR (Spatiotemporal reservoir resampling)
-
Realtime Fluid Simulation: Projection
- the article provides a showcase of the importance of a projection solver for a real
-
[video] Interactive Graphics 24 - Refractions, Transparency, Blending, & Alpha Testin...
- the video explains the concept of refraction and existing techniques to implement the effect
-
Graphics Pipeline, Techniques, & Algorithms in Vortice
- the visual graph provides a visual representation of the different passes from the fluid simulatio...
-
[video] Painting a Landscape using Mathematics
- the video provides a complete walkthrough of the creation of a large outdoor environment using sha...
-
Raytracing, a 4 year retrospective
- the article presents a retrospective of raytracing experiments done using compute shader implement...
-
Bindless rendering — Templates
- the article presents an abstraction system to allow shaders to author bindings without having to b...
-
Entropy decoding in Oodle Data: Huffman decoding on the Jaguar
- the article provides an in-depth look at the core loop optimizations of the Oodle decoding step fo...
-
[video] Unreal Engine 5 Guided Tour | Feature Highlight | State of Unreal 2022
- the 30min video provides a summary and examples of the new features in Unreal Engine 5 (UE5) to bu...
-
[video] 10 Shaders in 10 Minutes - Unity Shader Graph
- the video tutorial shows how to implement ten different effects using UnityShader graphs
-
[video] Tessellation and Displacement - Shader Graph Basics - Episode 41
- the video shader tutorial shows how to use tessellation and displacement to create dynamically det...
-
[video] Interactive Graphics 22 - Global Illumination
- a high-level overview of what Global Illumination is, the importance for the rendering results
-
[video] Interactive Graphics 23 - Ambient Occlusion & Soft Shadows
- discusses what Ambient Occlusion is, provides how it fits into the rendering equation and what it ...
-
[video] Procedurally Generating A Hexagon Grid in Unity
- the video tutorial shows how to generate a procedural hexagon shape mesh
-
Reducing Draw Time Hitching with VK_EXT_graphics_pipeline_library
- the blog post describes the functionality of the new pipeline library extension and how to use it ...
-
Software Rasterization of 2 Billion Points in Real Time
- the paper presents an improvement of compute shader
-
PIX 2203.30: Export to C++, UI changes and more!
- the blog post details the changes in the new PIX version
-
Authoring Efficient Shaders for Optimal Mobile Performance
- the GDC talk presents the Mali Offline Compiler and how to use it to analyze shader performance at...
-
[video] Interactive Graphics 20 - Compute & Mesh Shaders
- the video lecture explains the concepts of compute shaders
-
[video] Toon Shader Specular Highlights - Shader Graph Basics - Episode 40
- the video tutorial shows how to implement specular highlights for a toon shader
-
[video] Interactive Graphics 21 - Deferred, Variable-Rate, & Adaptive Shading
- the video lecture presents deferred shading, discussing the problems of forward shading and how de...
-
Texture sampling tips
- the article provides a collection of performance advice to consider with texture sampling
-
[video] How to Select 3D Objects With The Mouse Using OpenGL
- the video explains how to use render-to-texture to enable object selection
-
Discover 3D content optimization with Simplygon
- the talk provides an overview of different LOD concepts
-
Raytraced global illumination denoising
- the article provides an overview of a denoising solution for raytraced global illumination based o...
-
Rendering realtime caustics
- the article discusses a method for a simple non-PBR method to implement underwater caustics
-
Skybox tutorial part 1
- the article presents a walkthrough of the implementation of a complete skybox model, including tim...
-
Announcing Vulkan Memory Allocator 3.0.0 and Direct3D 12 Memory Allocator 2.0.0
- the article describes a large number of changes and improvements made to the AMD and Vulkan Memory...
-
1.3 Vulkan Loader Improvements
- Vulkan loader has been improved with more debugging capabilities and improved documentation
-
WebGPU and Graphics on the Web
- podcast discussing the development and design of WebGPU
-
Intel at the 2022 Game Developers Conference
- the page contains links to the presentations (slides and video) to the talks given by Intel at GDC...
-
NVIDIA Hopper Architecture In-Depth
- the article provides in-depth details about the new Hopper GPU architecture for data center usage
-
[video] Interactive Graphics 19 - Bump, Normal, Displacement, and Parallax Mapping
- the video presents an overview of techniques to represent more geometric details without having to...
-
Mach v0.1 - cross-platform Zig graphics in ~60 seconds
- the blog explains the graphics foundations of Mach, a zig graphics foundation layer
-
Fast Non-Uniform 3D Frame Representation
- the paper presents a derivation of a representation for rotation and non
-
[video] HOW TO DEBUG Your OpenGL Code
- the video tutorial provides a starting guide to OpenGL debugging
-
Transforming “noise” and random variables through non-linearities
- the article recaps the effects of linear transformations of random variables
-
[video] Live Coding an Alien Orb - God Rays & Translucency
- video tutorial presents a walkthrough of implementing volumetric god rays and subsurface scatterin...
-
PIX-2203.07: Support for DirectStorage
- the new release of Pix supports DirectStorage visualization on the timelines
-
DirectStorage API Now Available on PC
- Microsft has released the first public version of DirectStorage
-
How to add thousands of lights to your renderer and not die in the process
- the article presents an introduction into Reservoir
-
[video] Interactive Graphics 17 - Geometry Shaders
- the video course provides an understanding of the geometry shaders' capabilities
-
[video] Toon Shader Paint - Shader Graph Basics - Episode 38
- the video tutorial explains how to implement toon shading
-
[video] Interactive Graphics 18 - Tessellation Shaders
- the video tutorial covering Tessellation shaders
-
Fast, GPU friendly, antialiasing downsampling filter
- the article present how to derive a downsampling filter that uses eight bilinear samples
-
Optimizing Oklab gradients
- the article presents an overview of sRGB, Linear, and Oklab gradient interpolation
-
Abstracting the graphics api for a toy renderer
- the article discusses the authors' decision for a home renderer abstraction layer
-
Bindless rendering — Setup
- the article presents the implementation of a bindless binding model using D3D12 and Vulkan
-
A Better Approach to SDF Decomposition
- the article presents a compiler approach that takes an SDF representation and generates shaders fo...
-
Stochastic Light Culling for Single Scattering in Participating Media
- the paper extends the ideas of Stochastic Light Culling to compute single scattering in a homogene...
-
Multi-Resolution Geometric Representation using Bounding Volume Hierarchy for Ray Tra...
- the paper introduces a technique to lower the cost of ray tracing by using approximated geometry f...
-
Mali-G710: a developer overview
- the article presents hardware and shader compiler improvements for the new Malig G710 GPU
-
[RFC] Adding HLSL and DirectX support to Clang & LLVM
- the forum post presents the proposal to integrate HLSL and DXIL support into clang/LLVM
-
WebGPU — All of the cores, none of the canvas
- the article provides an introduction to WebGPU for compute shader workloads
-
AMD at GDC 2022
- the page contains information and links to all the talks that AMD will present at GDC22
-
Exposure Fusion – local tonemapping for real-time rendering
- the article presents an explanation of common tone mapping issues, comparing multiple local tone m...
-
Variable Rate Compute Shaders on Xbox Series X|S
- the presentation talks about techniques to use VRS (Variable Rate Shading) to reduce the cost of l...
-
Variable Rate Shading, Tales from the Trenches on Series X|S
- the presentations cover the experience of implementing VRS into Doom Eternal and Gears5
-
How Does Perspective Work in Pictures?
- the article discusses the effect that human perception and images appear different
-
Picking Fairly From a List of Unknown Size With Reservoir Sampling
- the article presents a collection of code samples that allow the selection of random samples from ...
-
Improved Accuracy for Prism-Based Motion Blur
- the paper presents a method for improving the quality of motion blur on dynamic triangulated objec...
-
Vulkan SC: Overview - and how it is different from the Vulkan you already know
- the article presents Vulkan for Safety-Critical applications
-
Beyond Sand & Spice: The VFX of Dune | DNEG Deep Dives
- the video panel discussion presents a look at the VFX development for Dune
-
Sampling in Floating Point (1/3): The Unit Interval
- the article presents a method to uniformly sample floats in the [0, 1) range
-
[video] Interactive Graphics 16 - Shadow Mapping
- the video tutorial explains the concepts required for shadow mapping
-
Tiling simplex noise and flow noise in two and three dimensions
- the paper presents a tileable implementation of simplex noise for 2D and 3D cases
-
Real-time Shading with Free-form Planar Area Lights using Linearly Transformed Cosine...
- the paper proposed a real-time shading calculation for area lights defined by cubic Bezier curves
-
Using Semaphore and Memory Sharing Extensions for Vulkan Interop with NVIDIA OpenCL
- the article presents a new set of OpenCL and Vulkan extensions to allow interaction between the AP...
-
[video] Clipping and viewport mapping in OpenGL
- the video tutorial explains the process that vertices passthrough after vertex processing
-
Untangling Direct3D 12 Memory Heap Types and Pools
- the article shows how GPU memory is exposed to D3D12 application developers
-
Why you can’t update Android’s GPU drivers like on your PC
- the article presents an overview of the Graphics driver development model on Android devices
-
Building a new graphics engine in Rust - Part 2
- the article presents the authors' API decisions while developing a D3D12 based graphics engine usi...
-
[video] Random Noise - Shader Graph Basics - Episode 35
- the video tutorial explains the concept of a noise hash
-
[video] Live Coding and Alien Orb - Modeling & Shadows
- the video tutorial presents a coding session of an extraterrestrial inspired Orb object
-
Ben Cloward - book recommendations
- the author presents his list of recommended books for technical artists
-
[video] Interactive Graphics 12 - The Rendering Equation
- the video lectures cover the history and motivation of the rendering equation
-
Shader translation benchmark
- the article presents a performance benchmark of the naga shader translation system
-
Cube Sphere Going from Cube to Sphere
- the article discusses an alternative way to procedurally generate spheres from a cube base divisio...
-
LunarG Releases New Vulkan 1.3.204.0 SDKs with Profiles Toolset and New Extensions
- new Vulkan SDK updates allows application developers to create their own profiles
-
Exploring the Vulkan 1.3 Software Development Kit (SDK)
- Vulkan webinars about Vulkan 1.3 on March 10th - covering Validation Layer Performance and Vulkan ...
-
A Review of Shader Languages
- the updated article presents a comparison of HLSL, GLSL, MSL, and WGSL
-
[video] Modern OpenGL - Compute Shaders
- the video tutorial explains the necessary concepts to use compute
-
Light transport matrices, SVD, spectral analysis, and matrix completion
- the article presents light transport matrices and how they relate to light transport concepts
-
Updates in Graphics and Gaming
- the article presents a new windows insider feature that will allow DX10/DX11 games to take advanta...
-
In the works: HLSL Shader Model 6.7
- the blog post presents the new features of shader model 6.7
-
Super Imposter shader: my journey to make a high quality imposter shader
- the article provides an overview of the development process of using a texture
-
[video] Real-Time Ray Tracing | RTX ON in Vulkan | Vulkan Lecture Series Ep. 6, Real-...
- Video lecture series of the real-time rendering course at TU Wien
-
A Shader Trick
- the article discusses a problem with effects caused by loss of floating
-
Technically Art: Issue 121 (11.02.2022)
- a collection of tweets about tech art, VFX, and related topics
-
[video] How Shaders Work (in OpenGL) | How to Code Minecraft Ep. 3
- video introduction tutorial to shader programming with OpenGL
-
[video] Interactive Graphics 10 - Textures on the GPU
- the video session explains Texture set up for usage from GPU shaders
-
Ray-tracing in 10ms: Ambient occlusion
- the article provides an overview of using raytracing to generate ambient occlusion
-
WebGPU January 2022 meetup — takeaways
- a roundup of WebGPU topics discussed at the January meetup
-
Speeding up Blender .obj export
- the article presents a walkthrough of the process that leads to the blender obj exporting being sp...
-
SIMD in the GPU world
- the article provides an overview of how SIMD execution models evolved over GPU generations
-
The road to 16-bit floats GPU is paved with our blood
- the article provides an overview of the state of 16
-
Two Low Discrepancy Grids: Plus Shaped Sampling LDG, and R2 LDG
- the article discusses more noise distributions functions, presents grid
-
Direct Light 2: integrating shadow rays into a path tracer
- the article presents why direct lighting computation should be separated from emitted light
-
Direct Light 3: what goes in the direct light function?
- the article presents components are defining the direct lighting component
-
2021 Vulkan Ecosystem Survey Results are in!
- the Vulkan survey presents a summary of the results and presents what next steps will be taken to ...
-
[video] Star Citizen Live: Graphics Engineering Q&A
- the developer interview answers a large number of user questions
-
[video] Interactive Graphics 08 - Lights & Shading
- video lecture presents an introduction explaining how surfaces are light from lights
-
[video] Skeletal Animation In OpenGL using Assimp - Part 5
- the final video of the skeletal animation series using OpenGL and Assimp
-
FXAA, SSAA, MSAA, and TXAA comic summary
- 4 slides for a brief summary of the 4 common anti
-
Direct3D 12: Long Way to Access Data
- the article presents the flow of data when a CPU generated value is accessed from an HLSL shader
-
UE5 Lumen Implementation Analysis
- the article provides a summary of the Lumen implementation found in UE5 (Unreal Engine 5)
-
Vulkan 1.3 and Roadmap 2022
- the article provides a summary of the features that are mandatory in Vulkan 1.3
-
In defense of NIR
- the article explains the history and evolution of the mesa shader compiler (internal representatio...
-
Advanced Kernel Profiling with the Latest Nsight Compute
- the new version of the Nsight Compute allows a better understanding of memory traffic and cache ev...
-
What is direct lighting (next event estimation) in a ray tracer?
- the article why randomly tracing rays leads to noisy results
-
WebGPU Best Practices
- the presentation contains a collection of best practices when working with WebGPU
-
[video] Useful functions for game designers - Cosine Interpolation
- the video explains the derivation of Cosine Interpolation
-
Shader tips and tricks
- the article contains a collection of 53 tips & tricks to consider when writing shaders
-
Removing Banding in Linelight
- the article discusses how noise can help to reduce banding in light gradients
-
[video] The Unreasonable Effectiveness of JPEG: A Signal Processing Approach
- the video provides a great introduction to image compression topics
-
Behind the Pretty Frames: God of War
- the WIP article presents a walkthrough of a frame of God of War (PC version)
-
Visualizing VGPR Pressure with Radeon™ GPU Analyzer 2.6
- the article presents the new VGPR Pressure Visualization view
-
The Perlin Problem: Moving Past Square Noise
- the article presents the shortcomings of Perlin noise and what causes these
-
[video] Tech Focus: Nvidia DLDSR - What Does AI Downsampling Actually Do?
- the video presents super sampling techniques - showing the issues introduced if super
-
[video] Talk - Practical Pigment Mixing for Digital Painting
- the paper presents the novel mixbox model for natural color mixing that matches the painting of oi...
-
Radeon™ GPU Profiler 1.12 released
- the article presents the new debug views that can visualize the wavefront execution patterns
-
Viewing DirectX® 12 Named Resources with Radeon™ Memory Visualizer 1.3
- the article presents how to show resource name usage in the AMD memory visualization
-
Texture Gathers and Coordinate Precision
- the article presents a deep dive into a gather related artifact
-
Instant Neural Graphics Primitives with a Multiresolution Hash Encoding
- the paper presents a multi-resolution hash table of trainable feature vectors
-
[video] Triplanar Projection Improvements - Shader Graph Basics - Episode 29
- the video improves the tri-planar projection shader (allows texture mapping without UVs)
-
[video] Interactive Graphics 01 - Introduction
- introduction to a university course that covers the fundamental concepts of real
-
[video] Useful functions for game designers - Lagrange Interpolation
- the video explains how to derive the Lagrange Interpolation functions
-
Technically Art: Issue 119 (14.01.2022)
- an extensive collection of a large variety of tech art tweets collected into a single post
-
[video] New Weather Simulator: Almost Perfect!
- Two Minute Papers video summary of the Weatherscapes: Nowcasting Heat Transfer and Water Continuit...
-
VK_KHR_dynamic_rendering tutorial
- the tutorial shows how to use the VK_KHR_dynamic_rendering extension in Vulkan
-
[video] Shader Coding for Beginners 2022 [Part 1]
- the first part of a shader coding course (6 hours!) focusing on textual shaders using Unity
-
[video] PhD Thesis Fast Forward 2021
- the video contains the summary and overviews of Siggraph PhD thesis
-
Cache and Bandwidth Aware Real-time Subsurface Scattering
- the PhD thesis provides an overview of Subsurface scattering techniques and proposes a taxon...
-
Sphere Scene in Unity URP
- the article explains how to set up an effect that allows meshes to appear cut at the boundaries of...
-
[video] You Might Be Thinking About Shader Performance Wrong
- the video focuses on visualizations of GPU performance considerations
-
[video] Skeletal Animation In OpenGL using Assimp - Part 2
- the second part of the series explains the mapping between vertices and bones
-
Insider guide to tech interviews
- the article provides an in-depth discussion of the interview process for more experienced develope...
-
Temporal AA and the quest for the Holy Trail
- the article presents a very detailed look at temporal anti
-
Reader Question Answered 1 - Learning D3D12
- the article provides a high-level learning guide for getting started with D3D12
-
Finding Your Home in Game Graphics Programming
- the article presents a high-level view of the graphics programming world
-
Interleaved Gradient Noise: A Different Kind of Low Discrepancy Sequence
- the article presents the characteristics of IGN(Interleaved Gradient Noise) that make it a good fi...
-
Notes on occlusion and directionality in image based lighting
- the article presents the findings of the importance of directionality and occlusion for IBL(Image
-
What is an uber shader?
- the article presents a look back at the emergence of the term uber shader
-
Not All Blue Noise is Created Equal Part 2
- the article compares different techniques to generate blue noise
-
The History of Retro Game Consoles for Programmers
- the article provides a history of game consoles in the First Generation 1972 to modern
-
Branching on a GPU
- the article presents branching on GPUs, clearing up that the cost of a branch depends on the kind
-
Stalling a GPU
- the blog discusses dependent texture reads and the impact on GPU performance
-
Mixed Precision Algorithms in Numerical Linear Algebra
- the paper presents a look at the half/single/double and quad precision for floating
-
[video] The small detail behind Breath of the Wild's Thousands of Trees - Quick Answe...
- one-minute long video shows the impostors used for far away vegetation in Zelda Breath of the Wild...
-
Global shaders in Unreal without engine modification
- the article shows how custom shader effects can be integrated into the UE4 pipeline
-
Digital Dragons 2021: Adam Sawicki - Efficient Use of GPU Memory in Modern Games
- talk discusses the available memory types in D3D12/Vulkan
-
Debugging For Graphics Programmers
- the article provides a collection of advice to help with debugging GPU issues
-
Christmas Decoration for Graphics Engineers
- the article describes a setup to use a software rasterizer to create winter decorations for tiny p...
-
Debugging Your Renderer (4/n): End-to-end tests (or, why did that image change?)
- the post presents the importance of testing images that allow the testing of a renderer
-
Debugging Your Renderer (5/n): Rendering Deterministically
- the article discusses sources of nondeterministic rendering in PBRT
-
Homegrown rendering with Rust
- the article presents the release of the kajiya experimental renderer written in Rust
-
[video] Triplanar Projection - Shader Graph Basics - Episode 28
- The shader video tutorial shows how to create a shader that projects textures from the top, front...
-
Improved Triplanar projections
- the article presents how to use barycentric coordinates to improve triplanar projections
-
[video] Digital Foundry's Best Game Graphics of 2021 - PC, Xbox, PlayStation - Anothe...
- video discussing the best graphical releases of the year
-
Vulkan: Why some GPUs expose a dozen of identical memory types?
- the article discusses why Vulkan drivers expose a single heap with multiple memory types
-
From GLSL to WGSL: the future of shaders on the Web
- the post describes the differences between the new WebGPU Shading language and GLSL
-
Triangle Grid Triangles and Hexagons
- the article presents alternative mesh structures to generate grid structures
-
Rendering in Real Time with Spatiotemporal Blue Noise Textures, Part 1
- the article introduces a technique and generated textures that enable the use of Spatiotemporal bl...
-
Rendering in Real Time with Spatiotemporal Blue Noise Textures, Part 2
- the article discusses Spatiotemporal blue noise in more depth
-
[video] Coding the Game of Life - Part II
- the second part of the game of life shadertoy implementation focuses on the improvement of the vis...
-
[video] Pipelines and Stages - Inside Graphics, Compute, Ray Tracing Pipes - Vulkan L...
- the video of the Vulkan lecture series introduces the stages of the graphics, compute, and raytrac...
-
Frickin' Shaders With Frickin' Laser Beams
- the author presents the design for a composable GLSL system based on the idea of closure
-
How to Read Research Papers: A Pragmatic Approach for ML Practitioners
- the article discusses advice for new research on how to effectively read research papers
-
Technically Art: Issue 118 (18.12.2021)
- a collection of tweets covering a large variety of tech art topics such as
-
Modern (Bindless) Sprite Batch for Vulkan (and more!)
- the article describes how to use a Vulkan bindless setup for 2D sprite batching
-
World-space spatiotemporal reservoir reuse for ray-traced global illumination
- the paper presents a technique that performs reservoir
-
AMD GPUOpen - Publications
- list of AMD research publications - contains papers starting in 2010
-
Godot Rendering Pipelines
- the article shows how to write data into an offscreen target and process it in a full
-
Enhanced Barriers
- Microsoft released the spec for the Enhanced D3D12 barrier API
-
D3D12 Enhanced Barriers Preview
- the blog post provides an introduction to the new enhanced barrier preview for D3D12
-
Experimental Analysis of Multiple Scattering BRDF Models
- the paper presents an analysis of multiple scattering BRDF models
-
Announcing HLSL 2021
- the article presents the new features released as part of the DXC update for December
-
Announcing new DirectX 12 feature – Video Encoding!
- the blog post presents the video encoding API that has been added to d3d12
-
Introduction to Tessellation in Metal
- the article presents an overview of tesselation shaders
-
How to Build a Compute Rasterizer with WebGPU
- the article presents how to implement 3D mesh rasterization in a WebGPU compute shader
-
[video] Swizzle & Channel Manipulation - Shader Graph Basics - Episode 25
- the video tutorial introduces swizzle operations
-
fma: A faster, more accurate instruction
- the article presents the shader multiply/add operation (fma/mad)
-
The Definitive Weta Digital Guide to IBL
- the tutorial describes the capturing process for image
-
Building a PS1 style retro 3D renderer
- the article describes the hardware characteristics of the PS1 renderer
-
Tiled Reservoir Sampling for Many-Light Rendering
- the paper introduces a combination of tile-based stochastic light culling and reservoir sampling
-
Gradients in linear space aren't better
- the article shows how gradients differ with different color spaces
-
Arm Best Practice warnings in the Vulkan SDK
- the article presents the Vulkan SDK layer architectures
-
Why gamers and developers should care about ray tracing
- the article provides an overview of use cases for ray tracing
-
Debugging Your Renderer (3/n): Assertions (and on not sweeping things under the rug)
- the article discusses the importance of asserts for debugging a renderer
-
Understanding Graphs in GPUView and RGP
- the article explains what information GPUView and Radeon GPU Profiler show
-
Custom Bloom Post-Process in Unreal Engine
- the article provides an overview of the bloom technique and implementations
-
Skeletal Animation In OpenGL using Assimp - Part 1
- the video tutorial provides an overview of the skinning animation technique
-
Denoising Sprite Fright
- the article presents the noise issues encountered when rendering out animated camera tracks
-
[video] Reflection and Refraction Vectors - Shader Graph Basics - Episode 24
- the video shows a visualization of reflection and refraction vectors
-
Lossless Image Compression in O(n) Time
- the article presents the overview of a small and simple lossless image compression
-
Floating-point in mobile shaders
- the article presents an overview of fp16 (16-bit floating
-
Tessellation-Free Displacement Mapping for Ray Tracing
- the paper presents a new approach that decouples displacement from the tessellation of the base me...
-
A quick breakdown of lighting in the restir-meets-surfel branch
- provides a rundown of the different stages of a WIP experiment combing surfels and ReSTIR for rend...
-
Shader Assembly and D3D12 Root Signatures
- the article presents a look at the RDNA2 assembly generated from a simple pixel shader that output...
-
Debugging Your Renderer (2/n): Unit Tests
- the article presents a starting point for developing unit tests for rendering algorithms
-
Adventures in Hybrid Rendering
- the article presents an overview of the implementation for various techniques found to mix raytrac...
-
Vulkan Pills 1: Bindless Textures
- the article presents the quickest way to implement fully bindless shaders using Vulkan
-
Advanced Shading Techniques with Pixel Local Storage
- the article shows how Pixel Local Storage can be used on ARM GPUs to implement Translucency and Or...
-
Getting started with Metal-cpp
- the article presents the official C++ interface for Metal
-
How to Level Up Your Profiling With RenderDoc for Oculus
- the article describes the RenderDoc fork for use with Oculus devices
-
Prefix sum on portable compute shaders
- the author presents his experience trying to run a prefix sum sorting algorithms portably using We...
-
From NVIDIA DLSS 2.3 To NVIDIA Image Scaling: NVIDIA’s Full Stack Of Scaling Solution...
- update on Nvidia scaling solutions - the NVIDIA Image Scaling SDK now provides an open
-
Jump flooding with bgfx
- the article shows an example of implementing a flood filling algorithm using the BGFX abstraction ...
-
Strange Attractors on the GPU, Part 1: Implementation
- the article presents how to implement GPU particles with movement tails without CPU interaction
-
How to draw styled rectangles using the GPU and Metal
- the article presents how to render rectangles with rounded edges
-
The Repackaged Windows Vulkan SDK
- the Vulkan SDK has been repackaged and now separates between core and optional components
-
NVIDIA GTC: A Complete Overview of Nsight Developer Tools
- provides an overview of the available Nvidia developer tools
-
Streamlining Render Passes
- the post summarizes the new VK_KHR_dynamic_rendering extension
-
[video] Intro to Graphics 22 - Signal Processing
- the video tutorial provides a beginner introduction to signal processing
-
[video] Jonathan Ragan Kelley: Organizing Computation for High-Performance Visual Com...
- the talk presents a discussion of performance tradeoffs
-
[video] (Ab)using RTX for Element Point Location
- provides an explanation of point queries and why point queries on unstructured data is a lot more ...
-
[video] Rendering Lines in a Game Engine // Game Engine series
- the video tutorial explains how to render lines using OpenGL
-
Shaded vertex reuse on modern gpus
- the article presents results comparing the vertex post
-
New Quest Rendering Tech Promises Massive Gains in App Performance
- summary of Occlulus Quest 2 Application SpaceWarp technology
-
Shadow outlines tutorial
- the Unity tutorial shows how to sample shadow maps and implement an edge detection filter
-
Stencil Portal in Unity — VFX Breakdown
- the article explains how to implement a portal look into a separate world using stencil buffers fo...
-
Technically Art: Issue 115 (05.11.2021)
- weekly round-up of tweets from a large variety of technical art and VFX topics
-
My personal hell of translating DXIL to SPIR-V – part 3
- the article presents the details of the D3D12 binding model and discusses the differences to Vulka...
-
Working Around Constructors in HLSL (or lack thereof)
- the article presents how constructor like functionality can be implemented in DXC HLSL
-
[video] Intro to Graphics 20 - Shadows & Reflections
- class in introduction to computer graphic series focusing on shadows
-
[video] How Computers Draw Weird Shapes
- the video tutorial explains how to implement metaball rendering
-
[video] A Deep Dive into Nanite Virtualized Geometry
- the video for the SIGGRAPH 2021 presentation about UE5 Nanite has been released
-
VK_KHR_dynamic_rendering
- Vulkan extension that allows the use of render passes in Vulkan using a D3D12 style objectless mod...
-
[video] Spot lights in OpenGL
- video tutorial explains the concepts of spotlights and develops a mathematical model to describe t...
-
[video] SIGGRAPH 2021 Rendering Engine Architecture course
- the videos for the excellent SIGGRAPH 2021 Rendering Engine Architecture course have been released...
-
The curious case of slow raytracing on a high end gpu
- the article shows that out of bounds access reduced rendering performance by 25x
-
Practical Gaussian filtering: Binomial filter and small sigma Gaussians
- the article discusses the Binomial and Gaussians filter
-
Advanced API Performance: Command Buffers
- the article covers a few high-level points on how command buffers allow parallelization of CPU ren...
-
Advanced API Performance: Memory and Resources
- the blog post provides recommendations for memory management using D3D12 on
-
Advanced API Performance: Mesh Shaders
- the article provides information about what practices are recommended for getting good mesh shader...
-
[video] How Link's eyebrows go over his hair - Quick Answer #shorts
- short 1-minute video that explains how masking with disabled depth testing allows the eyebrows to ...
-
Scalable global illumination for O3DE
- the presentation presents an overview of different Global illumination techniques
-
Interactive Exploration of Homogeneous Coordinates and Rational Splines
- the article provides an explanation of Homogeneous Coordinates
-
Vulkanised 2021 - Fall
- the slides and video recordings from the Vulkanised 2021 conference have been released
-
[video] HLSL shaders compilation pipeline in BG3
- discussing how the mapping from D3D to Vulkan binding semantics was implemented using SPIR
-
Interactive Volumetric Fog With Fluid Dynamics and Arbitrary Boundaries
- the article presents a method to generate and simulate real
-
Swapchains and frame pacing
- the article presents an in-depth overview of the pipeline required to display a image on screen
-
Advanced API Performance: Barriers
- collection of best practices for NVidia hardware regarding buffer management
-
Advanced API Performance: Async Copy
- the article discusses considerations when to use async copy queue, async compute, or serial copy e...
-
Advanced API Performance: Async Compute and Overlap
- the article presents a collection of Nvidia advice for getting good performance from async compute...
-
Recovering Real-World Reflectance Properties and Shading From HDR Imagery
- the paper presents how using HDR and 3D scan data, it's possible to reconstruct the material BRDF ...
-
Creating a Foliage Shader in Unity URP Shader Graph
- the tutorial covers a walkthrough of a foliage shader in Unity
-
[video] How To Render CIRCLES (OpenGL/Vulkan/DirectX/Metal)
- the in-depth video tutorial explains how to render a circle using shadertoy
-
The Shader Permutation Problem - Part 1: How Did We Get Here?
- the blog introduces the topic of shader permutations and why they end up being common issues
-
The Shader Permutation Problem - Part 2: How Do We Fix It?
- the article dives deeper into the issues related to shader permutations
-
NeRF at ICCV 2021
- collection of Neural Radiance Field papers that will be presented at Intl. Conf. on Computer Visio...
-
Frame Analysis - Control
- frame breakdown of a single frame from the game control (as video and text)
-
Graphics Twitter - send me links for stuff explaining modern GPU architecture (PS5,RT...
- Twitter thread asking for GPU architecture information
-
Linking DXIL Binaries Using DXC
- the article shows how recent versions of DXC can link DXIL shaders for all shader stages
-
AMD FidelityFX Super Resolution: the Digital Foundry interview
- interview with Nick Thibieroz, Director of Game Engineering at AMD
-
Gentle Introduction to Realtime Fluid Simulation for Programmers and Technical Artist...
- the articles provides a beginner friendly introduction into fluid simulation
-
GPU BCn decoding
- the article explains how BC format encodind differs between hardware vendors
-
Improving GPU Memory Oversubscription Performance
- the post presents an overview of the performance characteristics for nvida applications related to...
-
[video] Specular Lighting in OpenGL
- the video tutorial extends the Phong lighting model with the addition of specular lighting
-
Instanced Line Rendering Part II: Alpha blending
- the article demonstrates how to implement line segment rendering so that the segments are not over...
-
Ray Tracing versus Animation
- the blog presents performance number for Bottom-level acceleration structure when using D3D12 rayt...
-
New Graphics Books, Fall 2021
- collection of 5 new graphics programming books - fundamentals, Vulkan, OpenGL and a history of com...
-
Fast temporal reprojection without motion vectors
- the paper proposes a new technique to enable the temporal reuse of samples in scenarios where moti...
-
An OpenEXR Layout for Spectral Images
- the paper provides an overview of Spectral Image Representation and Bi
-
[video] Blub - Interactive GPU fluid solver
- the video provides an overview of a GPU based fluid solver
-
Dynamic flowing foam in Unity
- the Unity tutorial shows how to implement a basic flow system in Unity
-
Shader Tutorial: Self-Drawing Lines
- the Unity tutorial explains how to implement a 2D effect where a mask controls the visibility of a...
-
[video] How to think about 3D rotations
- the video explains how to develop a mental model of 3D rotations
-
Khronos KTX 2.0 Textures Enable Compact, Visually Rich, glTF 3D Assets
- Khronos released the texture format 2.0, which now supports Basis Universal compression
-
My personal hell of translating DXIL to SPIR-V – part 2
- the blog post describes the details about parsing DXIL (the output from the Microsoft Shader Compi...
-
Creative Use of GPU Fixed-Function Hardware
- the article presents a few examples of how GPU fixed function hardware is used for other purposes ...
-
Gentle introduction to GPUs inner workings
- the article provides an introduction to more hardware level information about GPU execution
-
Understanding Metal Enhancements in the A15 Bionic GPU
- the article provides a summary of the new hardware features in Apple GPUs
-
[video] NVIDIA’s New Technique: Beautiful Models For Less!
- the video provides a paper summary from NVidia that uses differentiable rendering to simplify geom...
-
CodeGen Performant Convolution Kernels for Mobile GPUs
- the article presents how to use MLIR (Multi-Level IR Compiler Framework) for efficient SPIR
-
GPU Dashboards in Jupyter Lab
- NVidia provides an open-source dashboard for Jupyter and a standalone Boker server
-
[video] Diffuse Lighting in OpenGL
- video tutorial that explains lambert diffuse lighting function
-
Discover advances in Metal for A15 Bionic
- the video presents what is new with the A15 GPU - added support for lossy compression
-
Compute versus Hardware
- the article presents a comparison of triangle throughput for indexed buffer rendering, mesh shader...
-
Creating Portable Vulkan Applications Using DevSim
- the whitepaper explains how to use DevSim to simulate lower spec devices on higher
-
Digital combat simulator: frame analysis
- the frame breakdown covers the flight simulator scenes
-
Developing Ray tracing content for mobile games
- the article discusses lessons learned by ARM's approach for developing raytracing support for Mali...
-
[video] Smoothstep - Shader Graph Basics - Episode 15
- the video shows the smoothstep node in UE5 and Unity3D
-
[video] The FUTURE Of Graphics | Mesh Shaders, Ray Tracing & Vulkan with Neil Trevett...
- video in-depth interview with VP of developer ecosystems at Nvidia
-
Custom Lens-Flare Post-Process in Unreal Engine
- the in-depth article shows how to implement a custom physically based lens flare effect as post
-
Fast Volume Rendering with Spatiotemporal Reservoir Resampling
- the paper presents how to extend spatiotemporal reservoir resampling to multi
-
A Token Based Approach To Ordering Transitions
- the author suggests a method D3D12 state transition system for multithreaded command recording
-
Physical Light-Matter Interaction in Hermite-Gauss Space
- the paper proposes a formal model to describe how surfaces/media respond to incident radiation
-
ray_tracing_motionblur
- the Vulkan tutorial shows how to use the Vulkan VK_NV_ray_tracing_motion_blur extension (exposed b...
-
Okhsv and Okhsl
- the article presents a derivation of new color spaces designed for more uniform color picker behav...
-
SDF Decomposition
- the article presents a method for the rendering of static Constructive solid geometry SDFs
-
Say hello to shadergarden
- article introduces a prototyping system aimed at making multi
-
Vulkanised 2021
- signup and schedule for the Vulkanised conference has been published
-
The Fog of Random
- the article presents a look at the making of the fog lost in random
-
Perceptual Model for Adaptive Local Shading and Refresh Rate
- the paper introduces a new metric, CaMoJAB - this considers how the judder, aliasing, and blur art...
-
My personal hell of translating DXIL to SPIR-V – part 1
- start of an article series discussing DXIL with the intended usage of conversion to SPIR
-
Vulkan’s Best Practice layer now has AMD-specific checks
- AMD published a Vulkan layer that analyzes the API usage
-
Vulkan Layer Symbiosis within the Vulkan Ecosystem
- the whitepaper provides an overview of the Vulkan layer validation tool
-
Access modern GPU features with WebGPU
- WebGPU is slowly rolled out into mainstream Chrome versions
-
Technically Art: Issue 108 (03.09.2021)
- collection of Tech Art tweets - covering procedural animation, waterfall simulations, particles, a...
-
The Rendering of Mafia: Definitive Edition
- in-depth frame analysis of a nighttime scene in Mafia, a d3d11 based deferred rendering engine
-
Optimizing AMD FSR for Mobiles
- the article presents optimizations to the FidelityFX Super
-
Compressed GPU texture formats – a review and compute shader decoders – part 3/3
- the article presents how to implement a shader-based ASTC decoder
-
My Takeaways from WebGPU July 2021 Meetup
- the article contains a brief summary of the content presented at the WebGPU meetup
-
Stylised Grass with Shaders in URP
- the shader tutorial presents how to implement a grass shader using the Universal Render Pipeline i...
-
Technically Art: Issue 107 (27.08.2021)
- collection of tweets covering an extensive range of technical art topics
-
Linux in a Pixel Shader - A RISC-V Emulator for VRChat
- article presents a project that emulates a Linux in a pixel shader running in VRChat
-
Temporal Antialiasing Starter Pack
- the article presents a collection of TAA resources
-
[video] The Beauty of Bézier Curves
- the video shows how bezier curves are defined, how they are used
-
Writing Portable Rendering Code with NVRHI
- Nvidia open-sourced their internal abstraction layer on top of D3D11, D3D12, and Vulkan
-
SIGGRAPH 2021 Links
- collection of links to Siggraph 2021 content - Courses, papers, posters, ...
-
Better GPU Hash Tables
- the paper presents three different variations of static hash tables for GPU usage
-
5 ways to draw an outline
- the articles shows Rim Effects, Vertex Extrusion, Blurred Buffer, Jump Flood Algorithm, and Edge D...
-
PIX 2108.18: New programmatic capture APIs and much more
- new PIX for windows APIs that allow applications to take a capture programmatically without having...
-
Read My Chapter in Ray Tracing Gems II!
- the article provides a summary of the Using Bindless Resources With DirectX Raytracing chapter fro...
-
[pptx] Geometry Rendering Pipeline Architecture at Activision
- the talk presents how Activision had to rethink the geometry pipeline when moving from tightly con...
-
[video] Anti-Racist Graphics Research (SIGGRAPH 2021)
- the video discusses biases and assumptions that are baked into the graphics research
-
Optimizing DX12 Resource Uploads to the GPU Using CPU-Visible VRAM
- the article presents a new D3D12 Nvidia extension that enables a developer to allocate CPU
-
SIGGRAPH 2021 Talk- Unbiased Emission and Scattering Importance Sampling for Heteroge...
- the paper presents a new distance sampling method
-
2D Lighting with Hard Shadows
- the article presents a polygon extension-based method for the generation of 2D shadows
-
2D Lighting with Soft Shadows
- the blog post extends the previously discussed hard shadow method to support penumbra based soft s...
-
Introducing a New API for Checking Feature Support in Direct3D 12
- the blog post presents a new helper class (CD3DX12FeatureSupport) that unifies the D3D12 feature c...
-
Introduction to Caching Shading Information in World Space using Implicit Progressive...
- the article presents an overview of a master thesis about caching shading information in world spa...
-
Advances in Real-Time Rendering in 3D Graphics and Games - Siggraph 2021
- course page for the content of Siggraph 2021 - covering Spatial Upscaling through FidelityFX, Conc...
-
Rendering Engine Architecture Course - Siggraph 2021
- a new course happening for the first time in 2021
-
Graphics Showcase: Using Vulkan Subpasses in UE4 for Performant Tone Mapping on Quest
- article presents how tone mapping can be implemented into UE 4 using Vulkan sub passes
-
Ray Tracing Gems II Available Today as Free Digital Download
- free 800+ pages on raytracing - a large number of topics is covered, including the following
-
Paper Digest: SIGGRAPH 2021 Highlights
- list of 149 accepted SIGGRAPH-2021 papers - containing a machine
-
EXR: Lossless Compression
- short blog post that tests EXR compression/decompression speed for the different available options...
-
A call to brute force
- author shows that path tracers are fundamentally simple if relying on pure brute force approaches
-
Swallowing the Elephant (Part 12): A Postscript On Disk Bandwidth
- discussion of loading performance in pbrt-v4 - showing how IO and CPU performance bottleneck chang...
-
A Little Bit About PRNG Stuff
- article presents an in-depth discussion of Pseudorandom Number Generators
-
Unity at SIGGRAPH 2021
- overview of Unity at Siggraph - Unity is providing access to a basic level SIGGRAPH pass
-
Some Books
- author suggested 3 books for computer graphics - covering raytracing, introduction to computer gra...
-
Free Ray Tracing Gems II Chapter Covers Ray Tracing in Remedy’s Control
- presents how all ray-tracing based effects were implemented in the game Control
-
Visibility TAA and Upsampling with Subsample History
- extension of the previously presented Decoupled Visibility Multisampling technique
-
Swallowing the Elephant (Part 10): Rendering on the GPU—Finally
- part of the series that discusses how GPU support for the Moana Island scene was added to pbrt
-
GPGPU, ML Inference, and Vulkan Compute
- the blog discusses Vulkan usage for GPGPU workloads, in particular for machine learning
-
Real-Time Shading with Polyhedral Lights using Silhouette Detection
- a Bachelor thesis that presents a method for GPU based silhouette generation from Polyhedral light...
-
[video] The Making of “Alpha Point”—UE5 Technical Demo | GDC 2021
- GDC talk presents a walkthrough of the technical creation aspects of the demo
-
Color Matching Function Comparison
- the post compares different Color Matching Function (CMF) for use with spectral rendering techniqu...
-
2D Lighting Techniques
- the article presents an overview of numerous techniques that can be used to implement lighting for...
-
Vulkan Hardware Database updates
- the Vulkan hardware database has been updated - texture format view now has a breakdown of what ti...
-
Software VRS with Visibility Buffer Rendering
- the article discusses how Visibility Buffer can be combined with Variable Rate Shading (VRS) Techn...
-
There is no S in SDF without the Distance Fields!
- the article explains how to express SDFs in Unity and Unreal
-
Real-time ray traced caustics
- the preprint from Ray Tracing Gems 2 covers two techniques for caustics
-
Processing aware image filtering: compensating for the upsampling
- the article presents the idea of compensating for shortcomings of an upsample technique in the dow...
-
Reducing Acceleration Structure Memory with NVIDIA RTXMU
- the NVIDIA RTX Memory Utility is an open-source (MIT License) SDK designed for reducing the comple...
-
[video] Arm Mali GPU Training Series Ep 1.2 : The rendering pipeline
- the video discusses the rendering pipeline - presents the geometry and pixel processing pipeline
-
[video] Arm Mali GPU Training Series Ep 1.3 : GPU architecture
- explains how the rendering pipeline translates into GPU hardware
-
[video] Arm Mali GPU Training Series Ep 1.4 : Hardware shader cores
- the video discusses the hardware essentials - presents how CPUs are designed
-
GPU architecture types explained
- the article discusses tile-based and immediate-mode rendering GPUs in detail
-
Using Debug Printf
- whitepaper that discusses how to use printf in Vulkan shaders
-
3D SDF Primitives in WGSL
- a collection of Signed-distance field primitives (Cylinder, cubes, ...) expressed in WebGPU Shadin...
-
[video] Tech Focus: Global Illumination - What It Is, How Does It Work And Why Do We ...
- the video provides an overview explanation of Global Illumination
-
My toy renderer, part 4: Ray tracing
- the article goes into detail on how to implement physically correct and affordable ray traced soft...
-
Decoupled Visibility Multisampling
- presents a method that decouples geometry samples from shading samples
-
Slope Space in BRDF Theory
- the article presents a refresher on the concept of slope
-
Dynamic destruction in Radio Viscera
- the article explains how the destruction system was implemented
-
FBM detail in SDFs
- the article presents a natural SDF based detail mapping / Fractal Noise displacement mapping
-
Technically Art: Issue 106 (16.07.2021)
- collection of tweets about technical art - covering particles, stylized shading, portfolios, and g...
-
Signed Distance field (SDF)
- a collection of resources, links, papers, discussions about SDFs
-
My toy renderer, part 3: Rendering basics
- the article explains how a visibility buffer approach is used
-
[video] Arm Mali GPU Training Series Ep 1.1 : Introduction to mobile systems
- the first part of the series discusses where mobile GPUs are used
-
Weighted reservoir sampling: randomly sampling streams
- pre-release chapter from ray tracing gems 2 - presents weighted reservoir sampling, a technique fo...
-
AMD FidelityFX Super Resolution (FSR) source code is now available here on GPUOpen
- the source code for the technique has been published on Github
-
Visibility Buffer Rendering with Material Graphs
- the article presents an overview of The Visibility Buffer approach
-
HPG 2021 Keynote: Alex Evans (NVIDIA), Optimising for Artist Happiness
- Alex covers many ideas and algorithms - classical tools require the artist to deal with technical ...
-
Raytracing tidbits
- collection of ray tracing experiments and presentation of results
-
The reference path tracer
- first free chapter from ray tracing gems 2 has been released
-
Automated Testing of a Ray Tracer
- author presents an introduction to automated visual testing
-
Comparing images in frequency domain. “Spectral loss” – does it make sense?
- the blog post discusses if it makes sense to compare images in the frequency domain
-
HPG 2021 Papers Preview
- preview video if a view of the papers presented at HPG 2021
-
WebGPU for Metal Developers, Part Two
- second part of the series explaining the WebGPU basics by presenting the equivalent concepts from ...
-
Relighting and Material Editing with Implicit Representations
- the article presents a brief overview of NeRF (neural radiance fields)
-
NVIDIA Research: NeRF-Tex: Neural Reflectance Field Textures
- the presents the use of neural fields to model materials such as fur, fabric, and grass
-
What is Vulkan Compute?
- author presents the subset of Vulkan API related to compute workloads
-
An Initial Inspection of FidelityFX Super Resolution
- blog post presents a comparison of AMDs FSR, CAS against other upscale techniques
-
MMPX Style-Preserving Pixel Art Magnification
- the paper presents a filter for magnifying pixel art (such as 8
-
Basic Shader Math - Shader Graph Basics - Episode 4
- the video tutorial explains how to use the add, subtract, multiply, and divide nodes in UE5 and Un...
-
MatMorpher: A Morphing Operator for SVBRDFs
- the paper presents a new operator for blending BRDF texture maps
-
[video] EGSR 2021 Day 1
- stream of the first day of Eurographics Symposium on Rendering 2021
-
Moving Basis Decomposition for Precomputed Light Transport
- paper presents the Moving Basis Decomposition framework
-
My toy renderer, part 2: Scene management
- the article discusses the scene structure of the authors' renderer
-
ReSTIR GI: Path Resampling for Real-Time Path Tracing
- paper presents a new path sampling algorithm for indirect lighting
-
The Missing Guide to Modern Graphics APIs – 2. PSOs
- the article presents an overview of why Pipeline State Object was introduced to allow predictable ...
-
[video] Live Coding: Making the American flag with math!
- the video tutorial shows a walkthrough to render the USA flag using shader toy
-
An Unbiased Ray-Marching Transmittance Estimator
- in-depth analysis of the sources of variance in state
-
NVIDIA Research: An Analytic BRDF for Materials with Spherical Lambertian Scatterers
- the paper presents a new BRDF for porous/dusty materials
-
Implementing Gamut Mapping
- the article discusses how to implement gamut clipping into a render pipeline
-
i3D 2021 Keynote: Trace All The Rays!
- describes the state of raytracing in games - presents a high
-
Real-time Neural Radiance Caching for Path Tracing
- the paper introduces a neural radiance caching method for path
-
[video] Drawing Boxes and Rectangles in URP Shader Graph with 2D SDFs!
- the video tutorial explains how to draw Squares, boxes, and rounded rectangles as SDFs
-
[video] Advanced Graphics Tutorial: Wakes, Explosions and Lighting: Interactive Water...
- discusses how to generate ocean displacement, buoyancy,
-
Deferred shading on mobile: An API overview
- the article discusses local tile memory and mobile GPUs
-
VK_EXT_multi_draw released for Vulkan
- a new Vulkan extension that adds vkCmdDrawMultiEXT vkCmdDrawMultiIndexedEXT
-
BRDF Importance Sampling for Linear Lights
- the paper presents a method for importance sampling linear lights such as fluorescent tubes
-
How to get the most out of Smart Access Memory (SAM)
- article describes how AMD Smart Access Memory allows applications full access to GPU local memory
-
Supporting Native HDR Monitors
- the article provides an introductory overview of HDR concepts
-
A Polarizing Filter Function for Real-Time Rendering
- the paper presents a polarizing filter function for specularly reflected light
-
What’s new in Metal at WWDC21
- the article shows an overview of new features and changes presented at WWDC21
-
Using asynchronous compute on Arm Mali GPUs: A practical sample
- the post shows how the Mali hardware operates and exposes multiple graphics queues
-
Perceptual Lightness for Game Graphics
- the blog presents a comparison between color's luminance and lightness
-
[video] All Blend Modes! Looking at the Shader Graph Blend Mode Filters
- the video presents an overview of all blend modes supported from the shader graph node
-
Stable Geometric Specular Antialiasing with Projected-Space NDF Filtering
- the paper introduces an improvement for specular antialiasing
-
[video] Lumen | Inside Unreal
- Lumen presentations starts at [10:00 minutes](https://youtu.be/QdV_e
-
Future geometry pipeline
- article discusses alternative approaches for geometry pipeline design
-
VFX Notes: Ep 1 – Actor replacement, UE5 and what exactly is gamma?
- new podcast about VFX in film, TV, and games - discussing Resident Evil Village and UE5
-
[video] Drawing a Line Segment in the URP Shader Graph with 2D SDFs!
- the video tutorial explains how to draw a line segment in pixel shaders
-
Brief Analysis of Nanite GPU Culling
- the article presents a look at the implementation details of nanite GPU culling
-
BRDF Importance Sampling for Polygonal Lights
- the paper presents how to sample polygonal area lights proportional to linearly transformed cosine...
-
[video] Explore bindless rendering in Metal
- the video explains the motivation for the bindless model and explains the concept
-
[video] Nanite | Inside Unreal
- interview discussing the demo project, lessons learned, discussions about future directions, and m...
-
WebGPU for Metal Developers, Part One
- the article presents the fundamentals of the WebGPU API required to draw a colored triangle
-
Bringing Vulkan Raytracing to older AMD hardware (Vega and below)
- the article discusses the implementation of ray-tracing support into the open
-
Fewer Samples per Pixel per Frame
- the blog post presents a history of sampling techniques, how it was used and how it changed over t...
-
How to use debugPrintf in Vulkan
- the article presents how printf is supported in Vulkan Shaders
-
Compute shader glossary
- the article provides an overview of compute shader terminology and how they differ between APIs
-
Neural material (de)compression – data-driven nonlinear dimensionality reduction
- the article discusses continues exploration in compressing a set of textures
-
[video] Live Coding:Bending Light
- the video tutorial shows how to implement refraction into a shadertoy
-
Data-Driven Analysis and Design of Vulkan Ray-Tracing Applications using Automatic In...
- the master thesis presents a SPIR-V based instrumentation framework
-
Brief Analysis of Nanite
- the article provides an analysis of the Nanite cluster algorithm
-
A Macro View of Nanite
- the article presents an overview of the Nanite Rendering pipeline using RenderDoc
-
Unbiased VNDF Sampling for Backfacing Shading Normals
- the paper presents an improved normalization for the Smith–GGX BRDF visible normal distribution fu...
-
[video] Basics of Mipmaps in Unity Part 2! Shaders, Bias, and Texture2DLOD!
- the video tutorial shows how to implement the MIP selection algorithm using shader code
-
Reliable Feature-Line Driven Quad-Remeshing
- the paper presents a new algorithm for the semi-regular quadrangulation of arbitrary input surface...
-
Infinite Grassland: Ray Traced Rare Semi-Uniform Entity Manifolds for Rendering Count...
- the article presents a proof of concept stage technique to render grass using a screen
-
[video] Introduction to Ray Tracing - Class 1
- introductory Siggraph class about ray tracing - including an opening interview with Peter Shirley...
-
Triangle Grids
- the article presents triangle grids - discussing what a triangle grid is, why to use them an...
-
Writing Shader Code in Universal RP (v2)
- the article provides an overview of authoring shaders in HLSL
-
Tech Art Chronicles: What Are SDFs Anwyay?
- the article explains what Signed Distance Fields (SDFs) are
-
The technical art of sea of thieves
- the video recording from the Siggraph 2018 has been released
-
A VR Frame’s Life
- the blog post presents the setup of a frame for VR rendering (Oculus Quest)
-
Distributing Monte Carlo errors as Blue Noise in Screen Space, Part 2 - Retargeting P...
- the article presents how to distribute Monte Carlo errors as blue noise in screen space
-
Graphics Pipelines for Young Bloods
- the post presents an overview of different rendering pipeline architectures (Forward, deferred, vi...
-
Hash Functions for GPU Rendering
- suggests using a PCG hash function as default for GPU based hash/random functionality
-
[video] Basics of Partial Derivative Shader Funcs in Unity! DDX, DDY, FWidth
- the video explains how partial derivatives are calculated in pixel shaders
-
Inherited Viewport Scissor Sample
- the article presents an overview of Vulkan secondary command buffers
-
[video] Beautiful Glitter Simulation…Faster Than Real Time
- Two Minute Paper presenting an overview of Procedural Physically
-
Fast Divergence-Free Noise Generation in Shaders
- the post presents a divergence-free noise generation technique (such as curl noise)
-
Tips: Acceleration Structure Compaction
- the article shows how to compact DXR acceleration structures
-
In-depth technical dive into metro exodus pc enhanced edition
- the article provides an overview of raytracing in rendering pipelines, how it has developed over t...
-
Experiments in hybrid raytraced shadows
- the blog post discusses how to combine raytraced and shadows from shadow maps
-
Shader translation benchmark on Dota2/Metal
- the blog post presents a performance comparison of Naga (rust based shader translation libra...
-
Radeon Rays v4.1 is now available – with open source!
- Radeon Rays v4.1 (ray intersection library for D3D12 and Vulkan) is now open source
-
The stack monoid revisited
- the article discusses a technique for parallel processing of stack
-
[video] Basics of Mipmaps in Unity Part 1! Import Settings and Custom Mipmaps!
- the video presents an explanation on mipmaps, presenting what effects it has on the visual appeara...
-
[video] Raymarched Reflections
- part 3 of the newton cradle tutorial series - shows how to implement reflections using raymarching...
-
[video] SIGGRAPH 2021: Technical Papers Preview Trailer
- 4-minute trailer presenting a brief look at many papers that will be presented as part of SIGGRAPH...
-
Temporally Adaptive Shading Reuse for Real-Time Rendering and Virtual Reality
- the paper investigates how shading reuse is perceived when visibility and shading rate is decouple...
-
Scaling Probe-Based Real-Time Dynamic Global Illumination for Production
- the paper presents extensions and improvements to the probe
-
[video] Basics of White Noise! Random Numbers for Shaders and ProcGen in Unity
- the video explains how to generate 2D Perlin noise and how to use it in Unity
-
[video] It Just Works: Ray-Traced Reflections in Battlefield V
- presents how D3D12 Raytracing support was implemented in Battlefield V
-
Graphics API abstraction
- the article presents a walkthrough of the API abstractions on top of D3D11, D3D12, and Vulkan used...
-
Generating Primitive Shapes in C++
- the article shows how to generate planes, cones, cylinders, and a torus
-
Direct Delta Mush Skinning Compression with Continuous Examples
- the paper presents a novel model that splits a Direct Delta Mush into two layers
-
Antithetic Sampling for Monte Carlo Differentiable Rendering
- the paper presents antithetic variance reduction technique used to estimate the interior integrals...
-
[video] Burning Down Virtual Trees... In Real Time!
- Two Minute Paper provides an overview of the Interactive Wood Combustion for Botanical Tree Models...
-
[video] Newton's Cradle: Setting up Materials
- part 2 of the video tutorial that adds material support to the SDF based Newton Cradle implemented...
-
The case of the curiously slow shader
- the article presents a walkthrough how the author analyzed the slow shader performance on the GPU ...
-
Projective Geometric Algebra - Wiki
- WIP wiki about Projective Geometric Algebra, specifically the four
-
How to Obtain Stable GPU Measurements on Quest
- the article presents how to setup UE and Unity to disable dynamic motions, user specific parts fro...
-
Technically Art: Issue 96 (30.04.2021)
- collection of tech art tweets - covering UE4 weather systems, GPU instancing with Unity shader gra...
-
Creating a Card Shader with 3D content
- the article presents a walkthrough how to create a card shader
-
[video] NEW – Video: Radeon GPU Profiler v1.10
- the video provides a summary of the new features in the radeon GPU profiler
-
Graphics technique names
- twitter thread author provides summaries of 3 common technques
-
Hashing Space Hashing in an Arbitrary Grid
- the tutorial explains how to generate consistent hashes based on integer positions
-
Announcing HLSL Shader Model 6.6
- 64-bit integer atomics are now supported - some new capability bits got introduced as not all view...
-
Supermassive black hole tutorial
- the tutorial provides a walkthrough of a raymarching supermassive black hole shader
-
[video] RTXDI: Details on Achieving Real Time Performance
- Talk discusses how the performance of the ray-traced direct illumination was greatly improved
-
[video] Denoising Raytraced Soft Shadows on Xbox Series X|S and Windows with Fidelity...
- explains shadow denoising process - broken down into 5 blocks that are explained individually
-
[video] Tier 2 Variable Rate Shading in Gears
- overview of Variable Rate Shading (VRS), what is supported with Tier 1 and 2
-
Inverse Z-Buffer
- visual representation that shows why inverted depth buffer range with floating
-
i3D 2021 - Posters
- list of posters presented at I3D - covering Linearly Transformed Spherical Harmonics, Style
-
ShaderQuest Part 5: Shader code syntax & Colors
- part 5 of beginner-focused shader tutorial series
-
The Graphics Codex
- the Graphics Codex online textbox is now a free - covering an extensive range of topics, model of ...
-
Rendering Decals and Many Lights with Ray Tracing Acceleration Structures
- the paper presents a method that uses the AABS from hardware raytracing shaders to apply decals an...
-
A Survey on Bounding Volume Hierarchies for Ray Tracing
- the paper presents comprehensive coverage of BVH hierarchies, especially focused on ray tracing
-
[video] Newton's Cradle: Modeling & Animation
- the video tutorial presents how to render and animate a newton's cradle with SDFs
-
Distinctive Derivative Differences
- the article presents the difference between ddx/y ddx/y_fine
-
An Introduction to Vulkan Video
- Vulkan API now exposes video support - extended the concept of the queue to support decode/encode ...
-
Pixel Art Filtering
- the article presents an overview of why filtering for pixel art at non
-
Appearance-Driven Automatic 3D Model Simplification
- the paper presents a machine learning-based approach that uses differential rendering to approxima...
-
How to read shader assembly
- the article provides an overview of shader assembly reading
-
Optimizing Triangles for a Full-screen Pass
- the article presents two common approaches to fullscreen passes
-
Bindless Descriptors
- the blog post provides a walkthrough of the bindless implementation in Wicked Engine for both Vulk...
-
Rendering large 3D tilemaps with a single draw call at 3000 FPS
- the articles describes the evolution of a multiple layered tilemap renderer
-
[video] The Basics of SmoothStep, a Useful Shader Function in Unity URP
- the video explains the smoothstep curve visually
-
how do you calculate correct normals when doing vertex displacement shaders?
- the Twitter thread provides a detailed explanation on how to correctly calculate normal vectors fr...
-
[video] rendering numbers single quad
- the video provides an in-depth walkthrough of a debugging vertex ID shader
-
NeuMIP: Multi-Resolution Neural Materials
- the paper presents a neural-network-based approach that is aimed at encoding detailed patterns int...
-
Countering Racial Bias in Computer Graphics Research
- the paper presents racial bias that can be found in the technical language and numerical measures ...
-
[video] Create a Sand Dune Shader Graph in Unity URP! No Textures Needed!
- the Tutorial presents how to generate sand dunes in pixel shaders using Unity
-
Radeon™ GPU Profiler v1.10 introduces GPU cache counters, Vulkan® ray tracing, and mo...
- updated version supports reporting of memory, instruction, and scalar cache usage on RDNA hardware...
-
Managing Shader Code Complexity in NVIDIA Omniverse
- the article provides an overview of the Slang Shading language and its use inside of NVIDIA Omnive...
-
Mean Squared Error is Variance
- the article shows how to calculate the variance of a stream of values
-
Baking Neural Radiance Fields for Real-Time View Synthesis
- the paper presents a novel sparse Neural Radiance Grid representation
-
Generating Meshes of a Sphere
- the article presents 4 different ways to generate a sphere mesh
-
Ray Tracing Lossy Compressed Grid Primitives
- the paper presents a method that allows a 5−7× reduction in memory footprint compared to indexed t...
-
Understanding Vulkan Synchronization
- the blog posts provides an easy to understand summary of the Vulkan Synchronization
-
Importance sampling visible wavelength
- the article presents experiments with spectral rendering to find an importance sampled wavel...
-
Interactive Path Tracing and Reconstruction of Sparse Volumes
- the paper presents a technique to allow path tracing through sparse volumes
-
[video] Compositional Neural Scene Representations for Shading Inference - SIGGRAPH 2...
- video recording of the SIGGRAPH 2020 was released
-
NVIDIA Vulkan Ray Tracing Tutorials
- Vulkan Ray tracing tutorials have been updated
-
Guided Visibility Sampling++
- the paper presents a technique to discover a potentially visible set (PVS) of triangles visible fr...
-
[video] Sparkling Grass Lawn in Shader Graph! Unity URP Procedural Material
- the video tutorial explains how to generate a procedural stylized lawn shader
-
Twitter Thread - Valheim rendering performance
- the Twitter thread presents a breakdown of the Valheim rendering pipeline (implemented using...
-
Technically Art: Issue 91 (26.03.2021)
- collection of tech art tweets - covering art style demonstration, material creation, destruc...
-
Wall Cutout in Shader Graph and URP
- the tutorial explains an approach how to implement cutting walls into 3D walls
-
Real-Time Geometric Glint Anti-Aliasing with Normal Map Filtering
- the paper presents a Geometric glint anti-aliasing method that is compatible with LEAN mapping
-
Screen-Space Reflections Explained
- the article provides an overview of the first steps required to implement screen space reflection ...
-
How to reconstruct an image if you see only a few pixels
- the article provides an introduction to Compressive Sensing
-
Auto HDR Preview for PC Available Today
- the article describes provides a brief overview of AutoHDR
-
[video] Adding Shadow Casting to Grass Baked with Compute Shaders
- the video tutorial shows how to change grass to cast shadows using Unity
-
Distributing Monte Carlo errors as Blue Noise in Screen Space, Part 1 - Theory and So...
- the blog post describes how blue noise can help to improve converge of ray tracing results
-
ShaderQuest Part 4: Shader Environment Architecture
- the tutorial aimed at Unity beginners explained how shaders are set up and structured
-
Which color scale to use when visualizing data
- the article series provides information about the role of color in data visualization
-
i3D 2021 - Papers Program
- list of all papers that will be presented as part of I3D 2021 in April
-
Soft Foliage Shader Breakdown
- the article presents how soft shading for foliage was implemented
-
Stochastic-Depth Ambient Occlusion
- the paper presents a novel approach to screen space ambient occlusion that accounts for occluded g...
-
[video] Shading the World of Anthem
- the video for the GDC 2019 talk has been released
-
Fitting cubic Bézier curves
- the blog posts discusses an approach for efficiently fitting bezier curves to an existing techniqu...
-
[video] Unity Basics: Triangle Winding, Culling Modes & Double Sided Materials
- the Unity video tutorial explains triangle winding order, how it connects to culling
-
The Rendering of Jurassic World: Evolution
- the article presents a frame breakdown of Jurassic World, a forward D3D11 based tiled forward ren...
-
Visual debugging and profiling
- the article presents an overview of the new debugging features in SHADERed
-
OpenGL on DirectX: Conformance & upstreaming of the D3D12 driver
- the article provides an overview of the state of OpenGL on D3D12; it's now used to run OpenGL appl...
-
Making a Shading Language for my Offline Renderer
- the blog post presents an overview of the custom shading language design for an offline renderer
-
shadertoy - Advanced tricks
- the blog post shows a number of tricks for shadertoy development
-
3D Math Primer for Graphics and Game Development - Free Online
- introductory math book released for free in updated form from the original release
-
Crash Course in BRDF Implementation
- the extensive article provides an overview explaining BRDFs
-
NAUGHTY DOG AT SIGGRAPH 2020
- videos and slides from SIGGRAPH 2020 presentations by Naughty Dog
-
Vulkan SDK Offers Developers a Smooth Transition Path to Synchronization2
- the blog post presents an overview of improvements of Synchronization2
-
New game changing Vulkan extensions for mobile: Timeline Semaphores
- the article presents an overview of Vulkan timeline semaphores
-
Ray Traversal of OpenVDB Frustum Grids
- the paper presents an incremental approach for the traversal OpenVDB frustum grids
-
[video] Differentiable Material Synthesis Is Amazing!
- the video provides a high-level overview of differential rendering papers
-
[video] Nioh 2 DLSS Analysis: AI Upscaling's Toughest Test Yet?
- video comparison of DLSS 2.0 against a native 4k rendering
-
Computing gradients on grids of pixels and voxels – forward, central, and… diagonal d...
- the post presents an overview of what gradients are, what they are used for
-
FXAA Fast approXimate Anti-Aliasing
- the tutorial shows how to implement FXAA into a Unity custom scriptable render pipeline
-
[video] The CRYENGINE Rendering Pipeline
- the Video provides a 90-minute in-depth look at the rendering architecture used in CryEngine
-
Tech Breakdown: Hiding Water in Boat Interiors
- the article presents two methods to hide water from the inside of boats
-
Experimenting with Shader Graph: Doing more with less
- the article presents an alternative way to pack PBR textures into a single 4 channel texture
-
New game changing Vulkan extensions for mobile: Descriptor Indexing
- the article shows how the Vulkan extensions enable bindless indexing on Android
-
Moving The Machinery to Bindless
- the article presents how the bindless binding model has been integrated into The Machinery
-
[video] Shaders For Game Devs
- 10h Video online class about shader development - whole series covers an entire spectrum from basi...
-
New game changing Vulkan extensions for mobile: Buffer Device Address
- the article presents the buffer_device_address (BDA) extension for Vulkan
-
Per-Texel Deferred Lighting
- provides an idea on how to maintain a pixel art style with dynamic lighting in a 3D environment
-
[video] Blade Grass! Generate and Bake a Field Mesh Using a Compute Shader
- the video tutorial shows how to generate a grass mesh using a compute shader
-
[video] GODOT 2D Dissolve Effect : Visual Shader
- the video tutorial shows how to implement a dissolve shader for 2D sprites using the Visual Shader...
-
Bilinear down/upsampling, aligning pixel grids, and that infamous GPU half pixel offs...
- the article shows a few ways of doing bilinear upsampling and downsampling
-
second tech art thread on the stylized rendering of “Dungeons of #Hinterberg”
- the Twitter thread presents details about how the outline rendering has been implemented
-
Temporally Reliable Motion Vectors for Real-time Ray Tracing
- the paper presents a new technique to generate more accurate motion vectors for shadows, glossy re...
-
More (Robust) Frustum Culling
- the article presents Separating Axis Theorem for OBB (oriented bounding box) against the view Frus...
-
New Vulkan extensions for mobile: Maintenance Extensions
- the blog post presents an overview of Vulkan extensions added as part of Android R
-
OpenCL: Hide data transfer behind GPU Kernels runtime
- the article presents how to use 3 parallel work queues in OpenCL to read, write and process a GPU ...
-
Minnaert For People Who Don't Know How To Minnaert
- article presents how to integrate a custom shading model into the Unity rendering pipeline
-
Vulkan Memory Types on PC and How to Use Them
- the blog post discusses the different memory types and how applications should use them
-
VK_KHR_synchronization2 extension support in our latest developer driver
- the AMD driver now supports the new Vulkan synchronization extension
-
Real-Time Physically Based Rendering and BRDFs
- the blog posts provides a walkthrough of the Cook
-
Using Radeon™ GPU Analyzer v2.4.1 with DirectX® Raytracing
- the Radeon GPU Analyzer now supports DXR shader disassembly, live VGPR analysis as well as control
-
Visual Exploration Of Light Transport In Path Tracing
- master thesis that covers a tool for interactive exploration of all contributing paths from a path...
-
RDO texture encoding notes
- the author provides a list of lessons learned and advice that should be considered when working on...
-
Unity SDF Generator – Part 2
- second particle in articles series about SDF (signed distance field) generation with Unity
-
[video] Generate a Mesh Asset Using Compute Shaders in the Unity Editor!
- the Unity tutorial explains how to generate meshes from a compute shader
-
Linear Interpolation
- the article provides a geometric interpretation of linear interpolation, range mapping, and how it...
-
Implementing Bitonic Merge Sort in Vulkan Compute
- Shows how to sort data on the GPU using Bitonic Merge Sort networks using GLSL/Vulkan compute
-
Ice Refraction in Shader Graph and URP
- the article presents how to implement ice shading
-
Coding a fireworks effect
- the video shows how to implement fireworks using fullscreen shader using Shadertoy
-
Fast Radius Search Exploiting Ray Tracing Frameworks
- the paper presents a method that maps spacial search in a fixed radius into a ray tracing paradigm...
-
Crystal Shader Breakdown
- the article presents a walkthrough of a stylized crystal shader implemented using Unity Shader Gra...
-
A Voxel Renderer for Learning C/C++
- the article provides an overview of a GPU voxel renderer using raytracing
-
Exploring DLSS 2.0 in Unreal Engine 4.26
- the article presents a comparison of DLSS 2.0 and the default TAA implementation of UE 4.26
-
Stylized rendering for Dungeons of Hinterberg
- the Twitter thread presents an overview of the stylized g
-
Godot 4.0 optimization progress report
- the post presents an overview of optimizations done for Godot 4.0
-
A simple path tracer on the GPU
- the article presents an overview of a simple GPU based path tracer written in Zig
-
Improved Shader and Texture Level of Detail Using Ray Cones
- the paper introduces a new method for Mip level selection, including anisotropic filtering in a ra...
-
sRGB gamut clipping
- the article presents an introduction to Gamut Clipping (mapping colors outside of the target colo...
-
Analysis-Driven Optimization: Preparing for Analysis with NVIDIA Nsight Compute, Part...
- first part of a three-part series that focuses on optimizing a CUDA workload
-
Managing Memory for Acceleration Structures in DirectX Raytracing
- the article presents how to reduce memory usage of bottom level acceleration structure (BLAS)
-
Rim Light Shader Graph in Unity URP! Moody and Atmospheric Lighting!
- the Unity video tutorial shows how to implement rim lighting (an effect that only applies to the e...
-
Introduction to Computer Graphics
- Video lectures for the Introduction to Computer Graphics Course at the University of Utah
-
Neural Geometric Level of Detail Real-time Rendering with Implicit 3D Surfaces
- the paper presents a deep neural network to generate signed distance functions using a fixed netwo...
-
Wrapping around the uv map in 80 frames
- the article presents an overview of UV mapping - showing different mapping techniques, problems, a...
-
NVIDIA Announces Nsight Graphics 2021.1
- updated tools adds support for inline raytracing and capturing applications that are not frame
-
A Failed Adventure in Avoiding Temporal Anti-Aliasing
- the author provides an overview of anti-aliasing solutions
-
Dissecting the Apple M1 GPU, part II
- the article discusses the progress on an open-source graphics stack for Apple M1
-
[video] Beyond Emitters: Shader and Surface Driven GPU Particle FX Techniques
- the video from GDC 2018 was released - the talk presents different iterations of a system to allow...
-
All the Pipelines - Journey through the GPU
- the presentation provides an overview of the rendering pipeline from mesh creation to screen outpu...
-
[video] Neon Noir – Raytracing on Mobile
- talk provides an overview of the Crytek rendering pipeline
-
OpenGL to Vulkan
- the article explains the process of porting the NAP creative coding Framework to Vulkan
-
Organic Variety Making the Artificial Look Natural
- the tutorial shows how to create procedural fractals
-
Rendering dunes terrain in WebGL
- the article presents how a sand dune wallpaper was implemented using WebGL
-
[video] How to calculate Normal Vectors in Shader Graph
- shows why normals need to be recalculated if a mesh shape is changed in a vertex shader
-
RenderDoc ‘Ref All Resources’ + Vulkan + Memory Aliasing = Beware
- the post shows how aliased resources can cause problems when doing render doc captures
-
John Carmack - Essays
- collection of articles/ blog post written by John Carmack on a variety of topics
-
[video] Unity: Frosty Icicle Shader with Amplify [URP]
- the video tutorial shows how to implement a shader for freezing objects
-
How stunning visual effects bring Ghost of Tsushima to life
- the blog post shows the interactive particle implementation used in Ghost of Tsushima
-
Step by step recipe for Temporal Anti-Aliasing
- the tutorial shows how to implement Temporal Anti
-
Loading OpenGL With Win32
- the Rust tutorial provides an extensive walkthrough of the steps required to use OpenGL usin...
-
Moving Gears to Tier 2 Variable Rate Shading
- the article presents how VRS tier 2 shading was integrated into Gears
-
Gamedev Pronunciation Guide
- the article contains a list of common graphics programming terms and how to pronounce them
-
Transition guide from VK_NV_raytracing to (final) VK_KHR_raytracing!
- the article provides a guide for porting from the original VK_NV_raytracing extension to off...
-
Summer Fun with Creation Graphs
- the article presents an overview of Creation Graphs and what it enables the user to create in The ...
-
[video] Stylized grass Tutorial || Houdini and Unreal Engine
- the video tutorial explains how to create stylized grass in the Unreal engine
-
Rendering a Sphere on a Quad
- the article explains in detail how to render a raytraced sphere that interacts with other parts of...
-
Intro to Shaders
- beginner-focused tutorial that explains how 3D data is structured in computer graphics
-
[video] Christmas special, making it snow.
- the video tutorial explains how to create interactive snow on terrain and objects using Godo...
-
A Diligent Approach to Ray Tracing
- the article presents a walkthrough of a RayTracing abstraction layer that was implemented fo...
-
Radeon™ GPU Profiler 1.9 introduces support for Radeon™ RX 6000 Series
- the updated tool allows an in-depth view into the raytracing details on AMD hardware
-
[video] CUDA Memory Model
- the video explains the CUDA memory model - covering the rules of how memory operations on sh...
-
ShaderQuest Part 0: Series Introduction
- Overview for the start of a new shader tutorial series for beginners
-
Ditherpunk — The article I wish I had about monochrome image dithering
- the article focuses on providing a walkthrough of dithering techniques
-
CVTT Texture Compressor Technical Breakdown
- the article provides an overview of the CVTT compression techniques used (DirecXTex fork aims to b...
-
[video] How to texture a procedural object
- the video tutorial explains the fundamentals of texture mapping in ShaderToy
-
[video] Getting Started with Compute Shaders in Unity
- this Unity tutorial aimed at beginners presents a starter guide for compute shaders
-
Unorganized Unit Vectors Sets Quantization
- the paper presents a new technique of on-the-fly quantization for unorganized sets of unit vectors...
-
Render Scale - Scaling Up and Down
- tutorial series about creating a custom scriptable render pipeline in Unity
-
Basic Tessellation setup in URP
- the Unity tutorial provides a starting point for how to use tessellation shaders
-
Graphics Studies Compilation
- collection of articles that provide a breakdown of various games
-
Rendering Astronomic Stars
- the article shows the steps required to use star databases to enable the correct rendering of star...
-
Best shots from 2020
- Collection of impressive screenshots from Games (mostly PC, a few from PS4 Pro)
-
Practical Hash-based Owen Scrambling
- the paper presents an implementation of a hash-based Owen scrambling for Sobol sampling with neste...
-
Why are video games graphics (still) a challenge? Productionizing rendering algorithm...
- the article provides an overview of considerations when developing a graphics technique for video ...
-
Frustum Culling
- the article presents how to implement frustum culling and the effects on CPU and GPU performance
-
Why Raytracing won't simplify AAA real-time rendering.
- the blog post provides a look back at the evolution of graphics technology and how they affect gam...
-
RDNA 2 hardware raytracing
- the blog posts takes a look at the RNDA ISA and presents how ray tracing has been implemented in A...
-
A perceptual color space for image processing
- the article presents a new perceptual color space
-
States and Barriers of Aliasing Render Targets
- the article presents an overview of D3D12 aliasing barriers, Discard/Clear semantics, and how they...
-
Hallucinations re: the rendering of Cyberpunk 2077
- the article presents a breakdown of a Cyberpunk 2077 frame
-
vk_mini_path_tracer
- Vulkan tutorial that shows how to implement a Path Tracer in 300 lines of C++ using Vulkan compute...
-
Grass Geometry Shader with Interactivity (Part 1, the shader)
- the Unity tutorial explains how interactivity between player and grass can be implemented for geom...
-
How To Create A Coiled Cable Shader In UE4
- the article explains how to generate cables from cylinders
-
to z-prepass or not to z-prepass
- the article presents an overview of what a Z-pre-pass is
-
[video] Cyberpunk 2077 PC: What Does Ray Tracing Deliver... And Is It Worth It?
- in-depth Digital Foundry comparison between Raytracing and classical rendering features on PC
-
Cameras and Lenses
- the article gives an understanding of how different types of camera and lenses work
-
[video] Glyphs, shapes, fonts, signed distance fields.
- the video tutorial provides an overview of signed distance fields
-
[video] Moving Mobile Graphics - SIGGRAPH 2020 Course
- video recording from all talks in the Siggraph 2020 course in a single video
-
Physically Based Rendering - Phong BRDF
- introductory slides for physically based rendering course
-
[video] Grass Fields in Unity URP! Procedurally Generate Blades with Compute Shaders ...
- the video tutorial shows how to generate grass blades that swing in the wind
-
Shockwave Shader Graph
- the video tutorial explains how to implement a ripple effect
-
Debugging refraction in a ray tracer
- short blog post that provides advice on how to debug refraction in a raytracer
-
Texture Compression in 2020
- the article presents an overview of different compression formats and libraries
-
Generating Ray-Traced Caustic Effects in Unreal Engine 4, Part 1
- the article explains the implementation of Caustics using a photon mapping technique that takes ad...
-
Using Mesh Shaders for Professional Graphics
- the article shows examples of how to use mesh shaders (code examples in GLSL)
-
AMD RDNA™ 2 Instruction Set Architecture
- the RDNA 2 Instruction Set has been released - shows that RDNA 2 supports dedicated instructions f...
-
Radeon™ Memory Visualizer is now Open Source
- AMD released the source code for the Memory Visualizer
-
Softening polygon intersections in Blightbound
- the article shows how fading our transparent objects when getting close to an intersection helps t...
-
Accelerating Unstructured Mesh Point Location with RT Cores
- the paper presents the results of research into using the RTX raytracing hardware for unstructured...
-
[video] SIGGRAPH 2020 — High Quality, High Performance Rendering in Filament
- video for the talk has been released, was covered in the week [147](https://www.jendrikillner.com/...
-
[video] SIGGRAPH 2020 - Large Voxel Landscapes On Mobile
- the talk explains the Voxel-based terrain system used in Roblox
-
Black skin in your stylized dimly-lit video game
- The article presents how important reflectivity of Black skin is for believable results
-
Open Problems in Real-Time Rendering
- the talk from Digital Dragons looks at open questions in rendering
-
Angelo Pesce - Rendering the Metaverse across Space and Time
- the talk provides an overview of Roblox and how the philosophy creates an environment with very di...
-
Particles Color and Depth Textures
- part of tutorial series about the Unity scriptable rendering pipeline (SRP)
-
Robin Taillandier & Jon Valdes - Every Strand Counts: Physics and Rendering Behind Fr...
- presentation shows the in-progress state of the new Frostbite hair rendering system in the context...
-
The Spraycan
- the articles discusses how the voxel rendering in teardown uses an 8
-
Linearly Transformed Spherical Harmonics
- the Bachelor thesis introduces Linearly Transformed Spherical Harmonics
-
Memory types of discrete GPUs
- the article explains a different kind of memory that exists
-
Intel View in Mafia III
- the article presents how the effect was implemented that allows objects to be colorized/silhouette...
-
Michał Olejnik - Raytraced Shadows in Call of Duty: Modern Warfare
- video recording of the talk covered in [week 154](https://www.jendrikillner.com/post/graphics
-
[video] Painting a Selfie Girl, with Maths
- the video presents an in-depth walkthrough that shows how to use signed distance fields (SDF) to c...
-
Reverse engineering the rendering of The Witcher 3, part 21 - the painted world
- the article shows how The Witcher 3 implements a fullscreen effect that gives the world a painterl...
-
biplanar mapping - 2020
- the post presents a bi-planar mapping as an alternative to tri
-
[video] Endless Fields of Grass in URP with a Compute Shader! | Unity 2020.1
- A Unity video tutorial that explains how to generate grass meshes using Compute shaders
-
Multiple Importance Sampling in 1D
- the article shows how Multiple Importance Sampling in 1D is used to improve the convergence of sto...
-
Baking a Realistic Renderer from Scratch and other resources for Beginners in Compute...
- a collection of resources (books, talks, websites) the author recommends for beginners to get star...
-
DirectX 12 Ultimate - Variable Rate Shading
- the presentation provides an overview of Variable Rate Shading (VRS), the different features level...
-
AMD FidelityFX Denoiser
- the presentation explains the ray tracing denoising technique developed by AMD
-
Vulkan Ray Tracing Final Specification Release
- the post explains what changes have been made to the Vulkan raytracing extension since the preview...
-
Exploring ray tracing techniques in Wolfenstein: Youngblood
- the article presents an overview of how Vulkan raytracing has been implemented into Wolfenstein
-
In the works: HLSL Shader Model 6.6
- the article contains an overview of the new features that will be included in shader model 6.6
-
D3D12 APITrace - Capture and Replay
- the blog posts describes how APITrace can intercept D3D12 applications (even complex AAA games suc...
-
[video] Realistic Clouds - Sapiens Devlog 54
- the dev vlog explains how the 2D billboard based clouds are implemented
-
[video] Devlog 1: How we built the toon shading | Open Projects
- the devlog presents a walkthrough of the implementation of a toon shader
-
[video] Introduction to Compute Shaders in Unity URP! Replace Geometry Shaders | Game...
- the video tutorial explains how to take an input mesh and use a compute shader to generate additio...
-
Top Fire Shader Graphs
- the article presents three different approaches to archive a fire effect using Unity
-
d3d12 - Vulkan
- unrolled Twitter thread presenting an overview of differences between D3D12 and Vulkan
-
Technically Art: Issue 76 (20.11.2020)
- collection of tweets related to VFX, shaders, and game art
-
CasCmdLine - Few Technical Details
- brief article that shows how to create a D3D11 device without a window
-
Practical Tips for Implementing Subsurface Scattering in a Ray Tracer
- the article presents techniques to improve Subsurface Scattering (SSS) implementation based on the...
-
Frostpunk Heatmap
- the Unity explains how to implement a heat map view to visualize the temperatures in Buildings
-
Resource uniformity & bindless access in Vulkan
- the article provides a brief overview of different kinds of array indexing types in shaders
-
What is shader occupancy and why do we care about it?
- the blog post explains what shader occupancy is and how it connects to vector registers usage
-
Retro CRT Shader — A post processing effect study
- the article explains how to implement a CRT rendering effect using GLSL
-
Combining 2D and 3D in Blightbound's VFX
- the article explains how the 2D VFX effect has been integrated int the 3D world of Blightbound
-
Introducing OWL: A Node Graph Abstraction Layer on top of OptiX 7
- article introduces OWL, an abstraction build on OptiX 7
-
The Bright Side of Ray-Traced Global Illumination in Unity
- the article presents the difference between baked, screen
-
Generating meshes procedurally in Unity
- the post explains how to generate a procedural mesh
-
Vulkan Ecosystem & SDK Survey - 2020
- Vulkan survey to gather information about user experience, platform support, and future developmen...
-
[video] Procedural Water Ripples in Unity using Shader Graph Only
- a Unity video tutorial that shows how to implement a water ripple effect
-
Linear Algebra Shenanigans: Gizmo Repair
- the article presents how to resolve issues with movement widget logic
-
[video] SIGGRAPH Asia 2020 – Technical Papers Trailer
- overview of technical papers that will be presented at SIGGRAPH Asia 2020
-
Normalizing the Phong Specular BRDFs
- the paper presents an energy normalization derivation of the Phong lighting model
-
Projective Geometric Algebra
- collection of resources by Eric Lengyel covering geometric algebra (this includes Grassmann algebr...
-
Compute Shaders Rendering One Million Cubes
- the article explains how to use a compute shader to render moving cubes
-
A summer sprint: bringing near-native performance to Zink
- the blog post presents an overview of the development progress of Zink(OpenGL on Vulkan layer)
-
Adding support for two-level acceleration for raytracing
- the second part of the blog post series covering raytracing implementation with compute shaders pr...
-
Khronos Vulkan Working Group Releases Shading Rate Extension to Increase Rendering Pe...
- Vulkan extension for Variable Rate Shading (VRS) has been released as [VK_KHR_fragment_shading_rat...
-
PIX 2010.26 – Updated Command List Execution View & Descriptor Heap Viewer
- latest PIX update adds support for visualizing the GPU execution of command list from a single Exe...
-
Technically Art: Issue 74 (30.10.2020)
- collection of tweets related to VFX, shaders, and game art
-
The Elephant on RTX – First Light. (or: Ray Tracing Disney’s Moana Island using RTX, ...
- the author presents an overview of his raytracer setup
-
Multiple Cameras Camera Blending and Rendering Layers
- the Unity article explains how to integrate multiple cameras into a scriptable render pipeline
-
Shader Graph - Stylized Glass
- the shader tutorial explains how to stylized toon glass shader
-
Screen Space Reflections in Blightbound
- the articles explains the pitfalls encountered when implementing Screen Space reflections
-
The Dark Side Of Ray-Traced Ambient Occlusion (RTAO)
- the blog post provides an overview of ambient occlusion and what it approximates
-
Technically Art: Issue 73 (23.10.2020)
- collection of tweets related to VFX, shaders, and game art
-
Raytraced Shadows in Call of Duty: Modern Warfare
- the presentation explains how the raytracing for shadows has been implemented into Call of Duty
-
Surface Gradient–Based Bump Mapping Framework
- the paper presents a new framework for layering and compositing of bump maps from different source...
-
A Tip for HiZ SSR - Parametric 't' Tracing
- the article presents how the precision HiZ tracing logic (used for screen space reflection) can be...
-
The future of RLSL
- the blog post explains the history of RLSL (Rust Like Shading Language)
-
Introducing rust-gpu v0.1
- First public release of Rust-gpu, a new SPIR-V backend for the Rust
-
A Better Way to Scalarize a Shader
- the article provides a brief overview of scalarization and suggests an alternative approach
-
GPU-Motunui
- the post explains the implementation of a path tracer that enables the rendering of the Disney Moa...
-
Watercolour Shader Experiments
- the Unity-based effect presents how to create a watercolor rendering style
-
Fast Eulerian Fluid Simulation In Games Using Poisson Filters
- the research presents a 2D fluid simulation in a 3D scene used to generate fire effects
-
Geometry Shaders in URP
- the Unity tutorial provides a brief overview of the rendering pipeline
-
HSV Shader Graph – Hue Saturation Value
- the tutorial explains HSV color space and presents how to implement conversion
-
Blowing bubbles with Shader Graph
- the article presents how to implement the rendering of a soap bubble in Unity
-
[Video] Vertex animation textures, beanbags and boneless animations
- The video tutorial explains how vertex animations can be stored and played back from textures
-
Does subgroup/wave size matter?
- the articles presents an overview of the GPU execution model, how divergent control flow is handle...
-
Framebuffers, WGPU and Rust
- the article explains the terms required to understand the initialization of a webGPU application
-
Hash Functions for GPU Rendering
- the paper presents an evaluation of deterministic hash functions
-
[video] Beautiful Results From 30 Years Of Light Transport Simulation!
- the video shows the history of light transport techniques and presents how they perform in complex...
-
[video] Variance-Aware Path Guiding (SIGGRAPH 2020 presentation)
- SIGGRAPH 2020 presentation that provides an overview of Variance
-
Grass Shader
- the blog post discusses the development of a GPU based grass rendering system
-
[video] Marvel's Spider-Man PS5 Ray Tracing Analysis - The Challenge of RT in First-G...
- the video shows the Ray Tracing implementation and uses it to explain the considerations when desi...
-
Yet Another Stylised Water Shader
- breakdown shows how a Stylised Water Shader was implemented in Unity
-
Scaling Probe-Based Real-Time Dynamic Global Illumination for Production
- the paper presents extensions to the [probe based irradiance
-
sRGB/ACEScg Luminance Comparison
- the blog post presents a comparison between the usage of different color spaces on the results of...
-
Color Grading Playing with Colors
- the 13ths part of the scriptable render pipeline tutorial explains how to add color grading to the...
-
System Value Semantics in Compute Shaders - Cheat Sheet
- the article presents a table of HLSL and GLSL compute shader semantics and how they the meanings m...
-
New Tutorial – Unified Radeon™ GPU Profiler and Radeon™ Memory Visualizer usage with ...
- tutorial explains the new unified AMD interface for the GPU Profiler Memory Visualizer
-
Porting detroit: become human from playstation® 4 to pc – part 1
- the post explains the experiences on porting the game from PS4 to PC using Vulkan
-
Porting detroit: become human from playstation® 4 to pc – part 2
- part two of the series provides on porting Detroit: become human offers an overview of indexing co...
-
Porting detroit: become human from playstation® 4 to pc – part 3
- the last part of the series briefly explains how they used scalarization to optimize shader, split...
-
Making a Real Time Stylized Sword Aura Effect with Shaders
- the author explains his approach for the design of an aurora shader challenge
-
Borderland between Rendering and Editor — Part 3: Selection Highlighting
- the articles explains how The Machinery implementing for rendering the outline of selected objects...
-
Fighting Fragmentation: Vulkan Portability Extension Released and Implementations Shi...
- the blog post provides an overview of the different API layering implementations (Vulkan on Metal,...
-
Math in Art
- beginner-focused tutorial explains how to store normals, noise, and positional data in textures
-
Vulkan Will Soon Have A Vendor-Neutral Cross-Platform Ray-Tracing API
- video presentation from the X.Org Developer Conference provides an overview of the Vulkan vendor
-
Technically Speaking Challenge 1: Retro Shaders
- collection all entries for a tech art challenge with the theme Retro shaders
-
Five years of GPU DB
- the author presents a look back at the last 5 years of the [GpuDB](https://db.thegpu.guru)
-
Loads, Stores, Passes, and Advanced GPU Pipelines
- the article explains the basic of the tiled GPU architectures used on mobile
-
The Last of Us Part II, material blending, the SDF of a plane.
- the video tutorial explains how to implement a rust effect on objects that intersect with a water ...
-
Rules for a Future-Proof 2D Render Order
- the article explains the sorting, rendering layer design for a 2D game
-
Write-up: VHS Image Effect
- post discusses a shader approach to implement a VHS effect using Unity
-
Building WebGPU with Rust
- the talk provides an overview of WebGPU and provides an overview of the implementation using Rust
-
Toon Lighting Basics
- the blog post explains how to implement a simple Toon Lighting shader using the Amplify Shader Edi...
-
Graphics.DrawProcedural
- the Unity tutorial shows how to generate mesh data on compute shaders and draw them from the GPU w...
-
Guide to Vulkan Synchronization Validation
- this guide explains how to use the Vulkan Synchronization Validation layer
-
Heat Haze Shader Graph How-To
- the article explains how to implement a heat haze screenspace effect for a 2D game using Unity
-
Radeon™ GPU Profiler 1.8 released
- article shows the new Instruction Timing, Theoretical occupancy, and UI improvements in the latest...
-
NVIDIA Announces Nsight Graphics 2020.5
- new release adds support for NVIDIA Ampere microarchitecture
-
Error Reporting Improvements for Vulkan Validation Layers
- Vulkan validation layer has been updated to include additional and improved validation messages
-
Procedural Physically based BRDF for Real-Time Rendering of Glints
- the paper presents a physically-based model for the realtime rendering of sparkling materials
-
Continuous Multiple Importance Sampling (SIGGRAPH 2020 Presentation)
- the video provides a great explanation of Monte Carlo integration importance sampling
-
I3D 2020 starts this Monday
- summary on how to take part and find the content of I3D 2020
-
Debugging D3D11 apps using D3D11On12
- overview of debugging D3D11 applications using Pix for Windows
-
Topics in Quantization for Games
- the post discusses a variety of quantization topis to ensure conversion of precision
-
Technically Art: Issue 67 (11.09.2020)
- collection of tweets related to VFX, shaders, and game art
-
VHS Video Material Tutorial
- the Unreal tutorial explains how to apply a shader effect that converts a video into a VHS s...
-
Stormscapes: Simulating Cloud Dynamics in the Now
- the SIGGRAPH Asia 2020 paper presents a cloud simulation with high
-
DOOM Eternal - Graphics Study
- in-depth breakdown of the the frame strutcure in Doom eternal
-
Variable Rate Shading: first impressions
- the blog post provides an overview of VRS modes, presents some possible use cases and perfor...
-
Compressing PBR material texture sets with sparsity and k-SVD dictionary learning
- the article provides an introduction to sparse and dictionary learning methods and applies t...
-
Compressed GPU texture formats – a review and compute shader decoders – part 2
- this part of the series presents a discussion of how the BC6 and BC7 format is implemented
-
GPU Captures: How we support placed and reserved resources
- the blog post explains how PIX for Windows tracks placed and reserved resources
-
Nsight: The Most Important Ampere Tools In Your Utility Belt
- the article provides an overview of the Nvidia tools available and how they can be combined t...
-
Porting Falcon Age to the Oculus Quest
- the article provides a post-mortem view about the kind of changes, optimizations, and qualit...
-
Shader Studies: Matrix Effect
- the article provides a detailed breakdown of a shader that implements a matrix style effect ...
-
Technically Art: Issue 66 (04.09.2020)
- collection of tweets related to VFX, shaders, and game art
-
RenderDoc for Oculus
- the blog post describes the custom Occulus fork of RenderDoc that adds support for a profiling mod...
-
SIGGRAPH 2020 Course: Physically Based Shading in Theory and Practice
- slides and videos for all course talks are available
-
Samurai Shading in Ghost of Tsushima
- the talk discusses the anisotropic specular techniques
-
Godot - OPTIMIZING A 3D SCENE
- a guide aimed at beginners with Godot engine that presents an overview of the available counters
-
New in DirectX— Feature Level 12_2
- the post lists the minimum requirements and optional features for D3D feature level 12_2
-
Real-time rendering of water caustics
- the article presents a WebGL based technique for caustics rendering
-
PIX Release 2008.26 – Our biggest update to GPU captures since 2017
- blog post provides an overview the PIX for Windows changes
-
Introducing the new Vulkan Configurator (vkconfig)
- the blog post contains an overview of the Vulkan Configurator
-
Seven Things for August 27, 2020
- collection of resources including a link to open Access Siggraph, interactive article on photogram...
-
High Quality, High Performance Graphics in Filament
- how to take advantage of tiling GPU architecture and enable the use of fp16 math
-
Quantitative Analysis of Z-Buffer Precision
- the blog posts present an analysis of depth buffer precision
-
Physics-Based Differentiable Rendering: A Comprehensive Introduction
- SIGGRAPH 2020 course that presents an overview of inverse
-
Bringing an Accurate Fresnel to Real-Time Rendering: a Preintegrable Decomposition
- presents a new model for Fresnel reflectance that provides a unification of Schlick and Gulbrandse...
-
Fresnel model #12
- Continued discussion on fresnel shading sparked by the talks of Siggraph 2020
-
How I turned my side project into a paper at a top graphics conference
- the article presents a walkthrough and experiences of getting a paper included in Siggraph 2020
-
Vulkan - Robustness
- the guide explains how optional robustness features allow Vulkan applications to treat out
-
An early release of pbrt-v4 and some notes about pbrt-gpu
- the first release of pbrt-v4, adds new rendering techniques but also adds support for GPU renderin...
-
Introduction to the Vulkan Computer Graphics API
- Siggraph 2020 course that provides an API overview for basic drawing in Vulkan
-
Single Pass Stereo: a study
- Single Pass Stereo is a technique that can be used to simultaneously project geometry for the left...
-
Advances in Monte Carlo Rendering: The Legacy of Jaroslav Křivánek
- SIGGRAPH 2020 course that reviews and discusses insights of techniques introduced Jaroslav Křiváne...
-
Zero-Variance Theory for Efficient Subsurface Scattering
- the Siggraph 2020 course presents guided sampling techniques that reduce variance to allow faster ...
-
Path Trace Visualization - Part 1
- the article presents how to implement a path visualization system for a GPU path tracer
-
HDR Scattering and Tone Mapping
- The Unity tutorial explains how to add HDR rendering support to a custom scriptable render pipelin...
-
A Primer on sokol_gfx.h
- the article provides an overview of the scope of the sokol_gfx 3D API wrapper
-
Best Practices: Using NVIDIA RTX Ray Tracing
- the article provides an extensive list of best practices for DXR usage
-
Jet Set Vulkan : Reflecting on the move to Vulkan
- the article provides a basic overview of how the OpenGL ES based engine was ported to Vulkan
-
Procedural Paintings with Genetic Evolution Algorithm
- the blog post explains how the author implemented a precural painting logic using compute shaders
-
Compressed GPU texture formats – a review and compute shader decoders – part 1
- the article presents an overview of the DXT and ETC compression formats
-
Writing Shaders in VS Code: GLSL Setup
- short post presenting how to setup VSCode to allow GLSL shader iteration
-
Rendering Perfect Reflections and Refractions in Path-Traced Games
- the article explains primary surface replacement (PSR) and checkerboarded split frame rendering (...
-
[video] Torus Knots explained!
- A video tutorial that explains how to implement a shader to render a torus knot using ShaderToy
-
Render Target Abstraction
- the article discusses the different render target requirements for D3D12 and Vulkan and presents 4...
-
LunarG Releases Enhanced Vulkan Configurator in new SDKs
- Vulkan SDK release contains a graphics vkconfig tool to allow users to configure layer settings
-
Fire Shader Breakdown
- the Unity tutorials show how to implement a fire effect using a camera facing quad with shader bas...
-
Nonsingular Point Light Attenuation
- the Siggraph 2020 talk presents the derivation of a point light attenuation that eliminates the si...
-
Case Study: Vector Displacement Mapping in Real-Time
- the article shows an overview of what vertex displacement mapping techniques are and how to genera...
-
A little clarification on modern shader compile times
- the article an overview of the complexities with Pipeline management in D3D12 and Vulkan applicati...
-
Perspective! 1: theory side
- the article shows the theory of perspective projects and discuses perspective distortion
-
Full Screen Shaders in HDRP, URP, and Built In Renderer
- the Unity tutorial shows how to write a simple fullscreen heat haze shader an apply in the differe...
-
Eight years at Roblox
- the article provides at the authors work of the last 8 years
-
Technically Art: Issue 63 (07.08.2020)
- collection of tweets related to VFX, shaders, and game art
-
[UNITY VFX TUTORIAL] Creating a Stylized Magical Barrier in Unity
- this video tutorial shows how to implement an Overwatch magical shield effect
-
Reverse engineering the rendering of The Witcher 3, part 20 - light shafts
- the in-depth article presents how the light shafts in The Witcher 3 have been implemented
-
SIGGRAPH 2020 Course: Physically Based Shading in Theory and Practice
- overview of the SIGGRAPH 2020 PBR course - contains the titles, speakers and abstracts of this yea...
-
Systematic Evaluation of the Quality Benefits of Spatiotemporal Sample Reprojection i...
- the paper presents an evaluation of what kind of gains can be achieved with temporal reprojection ...
-
Technically Art: Issue 62 (31.07.2020)
- collection of tweets related to VFX, shaders, and game art
-
Efficiency Tips on Switching Spaces and Transformation Matrices in Unity
- part 2 of an article series discussing the mathematical foundation of matrix/vector operations
-
Custom SRP - Post Processing Bloom
- next part in a Unity SRP (scriptable render pipeline) tutorial series covering the implementation ...
-
Oceans with Unity Shader Graph
- A video tutorial that shows how to implement a stylized ocean shader using Shader Graph in Unity
-
Seven things for July 30, 2020
- collection of 7 compelling links to compute graphics/programming related topics
-
Retro Renderman: shading on Finding Nemo’
- the article presents how the corals in finding Nemo have been shaded
-
Engine Work: DDGI Light Probe Depth Data Compression
- the article presents a few techniques to compress Dynamic Diffuse Global Illumination probe inform...
-
Vulkan synchronisation and graphics-compute-graphics hazards: Part I
- the article presents an overview of Vulkan barriers and shows how different barriers influence a P...
-
Vulkan synchronisation and graphics-compute-graphics hazards: Part 2
- the second part of the series presents how to overlap work from two consecutive frames by submitti...
-
using embree generated BVH trees for GPU raytracing
- the blog post presents how to use the Intel Embree library to generate a BVH tree for use with a G...
-
Retro Renderman: shading food for ‘ratatouille’
- the article present how the food in ‘Ratatouille’ was shaded based on the skin model
-
Sprite Outlines
- the Unity tutorial explains how to add an outline to a 2D sprite
-
Technically Art: Issue 61 (24.07.2020)
- collection of tweets related to VFX, shaders, and game art
-
Passing Particle System Data into Shadergraph (Custom Vertex Streams)
- This Unity tutorial shows how to pass data from the Shuriken Particle System to the particle shade...
-
Fundamentals of the Vulkan Graphics API: Why Rendering a Triangle is Complicated
- the article provides a high-level explanation of the Vulkan API concepts required to render a sing...
-
Unreal Engine Sky Atmosphere Rendering Technique
- open source D3D11 implementation of the paper presented at EGSR 2020 ["A Scalable and Production R...
-
Why Not Use Heterogeneous Multi-GPU?
- the blog posts list a few possible drawbacks that need to be considered if a mix of dedicated GPU ...
-
Quick Game Art Tip - Sprite/UI Color Mask
- a small shader example that shows that texture channels can be reserved to allow objects to change...
-
Optimizing Compute Shaders for L2 Locality using Thread-Group ID Swizzling
- the article shows how to improve performance of fullscreen compute shader passes by tiling thread ...
-
Art Tips from a Graphics Programmer 1, FRESNEL!
- a twitter thread that visually explains what the Fresnel effect is and how it affects the appearan...
-
Shadow Move Rendering in Killer Instinct: Season 3
- the blog post presents how the shadow move technique was implemented in Killer Instinct: Season 3
-
Three key techniques for improving mobile game graphics using PVRTexTool
- the blog post provides an overview of mipmapping, Colour Bleeding, and pre
-
Indexed Material Mapping Tecnique
- the short blogpost shows an artists material setup that uses a small 16x16 LUT as indirection tabl...
-
Technically Art: Issue 60 (17.07.2020)
- collection of tweets related to VFX, shaders, and game art
-
GPU Memory Aliasing
- the article discusses what memory aliasing exposed from Vulkan and D3D12 is and how it can be used...
-
[video] HPG 2020 - High-Performance Graphics (Day 1)
- Towards Fully Ray-Traced Games: Addressing System
-
[video] HPG 2020 - High-Performance Graphics (Day 2)
- Neural Denoising for Path Tracing of Medical Volumetric Data
-
[video] HPG 2020 - High-Performance Graphics (Day 3)
- Porting PBRT to the GPU While Preserving its Soul
-
NVIDIA Research: Warp Drive Gaming – Eliminate More than 80% of the Latency Performan...
- the paper presents a technique that uses late input latching and wrapping wrap render results to m...
-
Now You Can Choose High-Performing Unity Shaders
- the article provides an overview of the performance that can be expected from several Unity Engine...
-
An Exploration of GPU Silhouette Rendering
- the article presents many techniques for rendering broad outlines for 3D objects
-
[video] Unity: Make It Rain with Amplify Shader Editor
- this Unity tutorial explains how to implement a rain effect on the surface of objects using a tech...
-
WWDC20 - What's new in Metal and the Apple GPU
- the article summaries the changes announced at WWDC
-
Retro RenderMan: reflections in ‘ratatouille’
- a look back at how RenderMan handled blurry glossy surface reflection in 2007 for Ratatouille
-
A trip through ZOOBA’s bush rendering
- the blog post explains a CSG algorithm implementation based on using the depth and stencil buffer
-
Drinking from the Firehose: Learning Computer Graphics Techniques and Programming
- the author provides an overview of the mindset, technique, and requirements for learning graphics ...
-
Graphical glitch detection in video games using convolutional neural networks
- the master thesis looks at Machine Learning techniques to discover visual issues, such as stretche...
-
PIX 2006.26 – Fence Signal/Wait Arrows in GPU Captures
- this PIX upgrade adds support for signal wait visualizations and improved buffer visualization
-
Shader Graph : Stylized Skybox
- the Unity tutorial explains how to implement a stylized skybox with sun, moon, and clouds using th...
-
Using Radeon™ GPU Analyzer with Direct3D®12 Compute
- the article presents how to use the AMD GPU Analyzer for compute shaders
-
Using Radeon™ GPU analyzer with DirectX®12 Graphics
- the article explains got to use the AMD GPU ANALYZER to get low
-
Resolving Metal GPU timers
- the article explains how to collect GPU timestamps and synchronize the CPU and GPU timestamps
-
Barebones WebGL in 75 lines of code
- the article explains the basics required to render a triangle with WebGL
-
Deep dive into OpenGL over DirectX layering
- explanation of the architecture of executing OpenGL on D3D12 using a Mesa
-
Spectral Path Tracer
- the article explains how spectral rendering can be implemented in a DXR based path trace
-
Technically Art: Issue 59 (10.07.2020)
- collection of tech art and VFX twitter posts, including a look at facial animation tech of the Las...
-
[video] two minute papers - This is Geometry Processing Made Easy
- a brief summary video of the "Monte Carlo Geometry Processing: A Grid
-
Practical Product Sampling by Fitting and Composing Warps
- the paper presents an importance sampling method that is based on wrap functions that approximate ...
-
Warping samples paper at rendering symposium
- an additional explanation for the previously discussed paper containing the implementation for a r...
-
Graphics on the web and beyond with WebGPU
- the article provides an overview of the WebGPU API and shows the steps necessary to render a textu...
-
Lights and Shadows
- the great in-depth article explains the concepts of light with many interactive examples
-
Specular Manifold Sampling for Rendering High-Frequency Caustics and Glints
- the paper presents a new technique that combines techniques caustics and glint into a single frame...
-
Introducing neural supersampling for real-time rendering
- the paper presents a neural network upsampling technique that is aimed at 16x upsampling for real
-
Cancel your SIGGRAPH hotel; attend EGSR, HPG, and I3D 2020 virtually, free
- list of computer graphics conferences, dates and links to the stream as they are all virtual this ...
-
Point and Spot Shadows Perspective Shadows
- Unity tutorial that shows how to implement realtime shadows for point and spotlights using a custo...
-
A Taxonomy of Bidirectional Scattering Distribution Function Lobes for Rendering Engi...
- the paper presents a taxonomy of the lobes that are composed to create a BSDF
-
Fast Render Target Rendering in Unreal Engine 4
- the article presents how to efficiently implement render
-
Screen space shadows
- the articles show what screenspace shadows can add to the scene, provide an example of implementat...
-
Intersection of a ray and a plane
- the article shows how to derive the intersection between a ray and a plane
-
Get to know Metal function pointers
- the Metal shader API now supports function pointers
-
Scanline Effect
- the Unity tutorial explains how to implement a moving scanline post
-
[video] NVIDIA Nsight Feature Spotlight: GPU Trace
- the video provides an overview of the D3D12 frame
-
Constant data in Vulkan
- the article explains several different methods that can be used to manage shader constant data
-
SHAD2: shaders, but more difficult
- the article explains a method that stores shader instructions encoded into a texture and uses a ru...
-
The 31st Eurographics Symposium on Rendering
- the program for the online conference taking place this week
-
Features that are coming to iOS and MacOS
- a twitter thread that lists new features Metal API features and provides links to documentation fo...
-
[video] Rendering Roblox: Vulkan Optimisations on Imagination PowerVR GPUs (Presented...
- the GDC talk discusses the voxel-based lighting and shadow system
-
Graphics Study: Red Dead Redemption 2
- the article presents a frame breakdown of the PC version of Red Dead Redemption 2
-
NVIDIA Posts First DirectX 12 Ultimate Driver Set, Enables GPU Hardware Scheduling
- NVidia driver update adds support for DXR 1.1, VRS Tier 2, mesh shaders and sampler feedback
-
Optimize Metal apps and games with GPU counters
- a video from WWDC 20 provides an overview of the GPU pipeline, what hardware counters are availabl...
-
Discover ray tracing with Metal
- video from WWDC explains the basic building blocks of the Metal ray tracing API and how to support...
-
Creating Optimal Meshes for Ray Tracing
- the article provides an overview of several problematic mesh characteristics that cause an issue f...
-
Rendering Layered Materials with Anisotropic Interfaces
- a lightweight and efficient method to render layered materials with anisotropic interfaces
-
Technically Art: Issue 57 (19.06.2020)
- collection of tweets related to VFX, shaders, and game art
-
Improving GPU Profiling on Oculus Quest
- overview of two new libraries developed by Oculus and Qualcomm to expose low
-
Implementing Stochastic Levels of Detail with Microsoft DirectX Raytracing
- the article presents how to use stochastic LOD selection for a DXR based ray
-
Oodle Texture slashes game sizes
- the article explains how Oodle Texture can prepare BC textures in such a way that secondary ...
-
Announcing CUDA on Windows Subsystem for Linux 2
- the article presents CUDA for WSL 2, how to use it and additionally shows how it cooperates ...
-
Detecting Bias in Monte Carlo Renderers using Welch’s t-test
- the paper presents to Welch’s statistical t-test can be used to detect bias even with low sample c...
-
Top Nine Questions About the ‘Ray Tracing Essentials’ series from Developers
- the article contains the answers to some common question viewers of the Ray Tracing Essentia...
-
GPU Optimization for GameDev
- an extensive collection resource covering various aspects of GPU optimizations
-
Creating shader animation in Unity
- the article presents how to create a running rat animation using a vertex shader
-
From 0 to glTF with WebGPU: The First Triangle
- the first part of a WebGPU series shows the necessary steps required to render the first tri...
-
From 0 to glTF with WebGPU: Bind Groups
- this tutorial explains how to bind resources and uses this to add basic camera movement support
-
Can’t Invert the CDF? The Triangle-Cut Parameterization of the Region under the Curve
- the paper presents a technique that allows Cumulative Distribution Functions that cannot be ...
-
The Forge - Raytracing Benchmarks
- overview of cross-platform raytracing abstraction in "The Forge" and a summary of performanc...
-
A Scalable and Production Ready Sky and Atmosphere Rendering Technique
- the paper presents the sky and atmosphere model developed by Epic Games that support dynamic...
-
[video] Flowmaps, gradient maps, gas giants
- the video tutorial explains UV animation, extending this to support varying animations betwe...
-
Followup tidbits on RGBE
- the author presents considerations for designing conversations explained with the example of RGBE ...
-
The Center of the Pixel is (0.5,0.5)
- the article explains how to deal with pixel coordinates correctly
-
Real-Time Ray Tracing Summit
- an online summit with talks about ray tracing topics
-
Preliminary HPG 2020 Program
- program for talks that will be presented as part of high
-
Fast 2D rendering on GPU
- the article provides an overview of an algorithm for GPU based rendering of 2D vector graphics
-
High Fidelity Graphics for games with HDRP
- the talk from Unit presents techniques required for best results with Unity High definition render...
-
Parallel CSG Operations on GPU
- the article presents how a CSG Operation implementation based around point clouds has been designe...
-
Animated Light Cookie Shader (Cloud & Tree Shadows)
- the Unity tutorial shows how to dynamically generate light blocker textures to simulate clouds and...
-
[Video] EG / STARs 5 / Neural Rendering / Wednesday
- the collection of talks for the field of neural rendering methods
-
Fake vs True Displacement - Part 1/2
- the two-part article series shows the difference between Bump
-
Perceptually Smooth Multi-Color Linear Gradients
- the notebook shows how to interpolate gradients in a perceptually smooth way using Catmull Rom spl...
-
[Video] Optimizing Roblox: Vulkan Best Practices for Mobile Developers
- Vulkan talks that cover the Vulkan sample framework, load/store operations, sub
-
Quadrant-Sizing for Efficient UI Rendering
- the author presents his implementation of a UI element system that allows arbitrary object scaling...
-
Distance Field Ray Tracing Part 1: Volume Textures and Ray Marching Primer
- the UE4 tutorial is a primer on how to build distance field shapes and use raymarching from volume...
-
Casual Shadertoy Path Tracing 3: Fresnel, Rough Refraction & Absorption, Orbit Camera
- path 3 of path tracing shows how to extend the materials to support fresnel as well as reflection ...
-
Work-Efficiency vs. Step-Efficiency
- the article discusses how to classify GPGPU work into the critical sequential work and the total a...
-
Widespread error in Radiance HDR RGBE conversions
- the article presents how RGBE 8888 should be encoded and decoded correctly
-
Casual Shadertoy Path Tracing 2: Image Improvement and Glossy Reflections
- part 2 of path tracing implementation series, adding Glossy reflection Anti
-
SIGGRAPH Spotlight: Episode 35 – Real-Time, Ray Tracing, and Realism
- Podcast episode with Arisa Scott (Unity), Eric Haines (NVIDIA), Mike Hardison (Blizzard Entertainm...
-
How to evenly distribute points on a sphere more effectively than the canonical Fibon...
- the article explains how to use to distribute points onto the surface of a sphere
-
LunarG releases GFXReconstruct, a new Vulkan Capture/Replay Tool, with SDK 1.2.141
- new Vulkan SDK now contains the Microsoft Shader Compiler
-
SPIR-V Guide
- this guide is designed to explain SPIR-V, what to use it for and present an overview of the intern...
-
Writing Shader Code for the Universal RP
- Shader guide that explains how to write Unity shaders that are compatible with the Universal Rend...
-
Messed up 3D Meshes: A case study in the limits of integer floating point
- the article shows problems of floating-point precision in the model export pipeline
-
Ambient Occlusion
- the presentation explains what Ambient Occlusion is, and provides an overview of different algorit...
-
Real-time Cubism Shader
- presents a method to implement a Cubism effect, similar to what can be seen in "Spider
-
Sharpening the renderer
- the article presents Contrast Adaptive Sharpening and how it's used in EVE to make details on ship...
-
Texture Generation Part 2: Normal Swizzling
- Unity tutorial that shows to mix Normal map correctly
-
Casual Shadertoy Path Tracing 1: Basic Camera, Diffuse, Emissive
- A tutorial that shows a practical walkthrough on how to implement a path tracer in shadertoy
-
Curving Corner Texture UVs
- the article shows how to generate UVs for curved corners using Unity
-
Iterating on Variable Rate Shading in Gears Tactics
- the articles present how the VRS (Variable Rate Shading) implementation was approached
-
Civilization VI Fog of War
- This Unity tutorial explains how to implement a Civilization VI style fog of war system
-
New geometry pipeline in Magnum
- the articles describe the design of the new geometry (import) pipeline of the Magnum engine
-
The design and evolution of the UberBake light baking system
- A global illumination system developed by Activision
-
Progressing in Circles
- the articles presents different approaches on how to implement a ring progression effect
-
Technically Art: Issue 56 (29.05.2020)
- collection of tweets related to VFX, shaders, and game art
-
A survey of temporal antialiasing techniques: presentation notes
- authors notes on the Survey of Temporal Antialiasing Techniques talk from the Eurographics 2020 vi...
-
Point and Spot Lights Lights with Limited Influence
- the next part in a Unity tutorial series on the scriptable render pipeline
-
Borderland between Rendering and Editor — Part 2: Picking
- the article explains how the GPU based picking system in "Our Machinery" has been implemented
-
Reverse engineering the rendering of The Witcher 3, part 19 - portals
- the article shows how the portal rendering effect in The Witcher 3 has been implemented
-
Stochastic Substitute Trees for Real-Time Global Illumination
- a GI algorithm based around tracing Virtual point lights (VPLs), converting clusters of VPLs into ...
-
Dimensionality reduction for image and texture set compression
- detailed post presents the idea of “decorrelating” color channels to maximize information in textu...
-
DirectX is coming to the Windows Subsystem for Linux
- Version 2 of Windows Subsystem for Linux adds full support for D3D12 (not allows rendering to the...
-
Video: Gears 5 – High-Gear Visuals On Multiple Platforms
- relaxed cone step mapping for relief mapping to add more details
-
From Built-in to URP
- collection of concepts, macros, shader logics, that exists in unity build
-
Vulkan Helper Libraries Survey
- Khronos questionary that presents a list of suggestion for possible vulkan helper libraries
-
Making a clean (mini)map using Navmesh and a Shader
- Unity tutorial that shows how to use a navmesh as a base for minimap rendering
-
Accelerating Ray Tracing with Origin Offsets
- the paper proposed a new method that aims to improve ray tracing by offsetting ray starting point ...
-
Texture Generation
- A unity tutorial that shows how to blend multiple textures together and save them to disk using Un...
-
Technically Art: Issue 55 (22.05.2020)
- collection of tweets related to VFX, shaders, and game art
-
Welcome to the joint conferences, Eurographics & Eurovis 2020
- Eurographics & Eurovis 2020 conference will be virtual and streamed starting May 25
-
Quick Introduction to Mesh Shaders (OpenGL and Vulkan)
- brief overview and introduction into Mesh Shaders using OpenGL and Vulkan
-
Optimizing for the RDNA architecture: presentation notes
- collection of notes about the content of the AMD talk presenting the AMD RDNA architecture and GPU...
-
Rendered #1
- A new newsletter with news and insight on volumetric filmmaking, virtual production, 3D rendering,...
-
Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lig...
- the paper presents a new technique that allows a massive number of dynamic lights to be rendered i...
-
Let's build ... 2020
- AMD virtual event that contains talks about - Ryzen™ Processor Software Optimization
-
Technically Art: Issue 54 (15.05.2020)
- collection of tweets related to VFX, shaders, and game art
-
I haz a GDC talk - Real-Time CSG
- overview of what Constructive Solid Geometry (CSG) is and workflows
-
Getting started with Radeon Memory Visualizer (RMV)
- the post provides an overview of the new AMD memory profiler for Vulkan and D3D12
-
Using Blue Noise For Raytraced Soft Shadows
- the article shows how to calculate the shadows from the sun
-
Ray Marching Fog With Blue Noise
- the article presents how using blue noise can improve ray marching results
-
Frame Analysis - Minecraft RTX Beta
- presents a breakdown of the RTX implementation for Minecraft
-
Some brief thoughts on how Nanite in UE5 possibly works....
- the author presents his ideas about how the Nanite technology in the UE5 tech demo might be implem...
-
Some thoughts on Unreal 5's Nanite - in way too many words
- the article that discusses possible ideas on how the UE5 nanite technology might be implemented
-
NVIDIA Ampere Architecture In-Depth
- an overview of the new Nvidia Ampere Architecture aimed at compute workloads
-
CUDA 11 Features Revealed
- overview of new features in CUDA 11 and how the NVIDIA Ampere GPU hardware features are exposed
-
Ray Tracing Essentials Part 7: Denoising for Ray Tracing
- the final part of raytracing series - presents what denoising techniques are and why they are requ...
-
a history of nvidia stream multiprocessor
- the article presents an overview of the Nvidia GPU architecture and how they developed over time
-
Rendering volumetric clouds using signed distance fields
- presents a technique that combines singed distance fields and ray marching to render static volume...
-
Monte Carlo Geometry Processing: A Grid-Free Approach to PDE-Based Methods on Volumet...
- the paper presents how to apply the monte-carle methods to geometry processing
-
On Ray Reordering Techniques for Faster GPU Ray Tracing
- the paper presents an overview of ray sorting techniques and introduces a new method for ray sorti...
-
A perceptual model of motion quality for rendering with adaptive refresh-rate and res...
- this paper presents the results of testing done into human perception, comparing test
-
[video] Animal Crossing, wobbly leaves, pivot caching.
- the Video presents an overview of a shader technique implementing the behavior of leaves in Animal...
-
Point of WebGPU on native
- the author presents his view on WebGPU for use in native applications
-
GPU architecture resources
- collection of resource links to presentations, papers and articles focusing on the details of GPU ...
-
CUDA Refresher: Getting started with CUDA
- a brief overview on how to get started with CUDA
-
Meshlete - Chop 3D objects to meshlets
- a tool to generate meshlets for use with compute based culling algorithms or mesh shaders
-
Real-time Shadows
- the presentation provides an in-depth overview of shadow techniques for real
-
Physically-Based Materials – Energy Conservation and Reciprocity
- the article presents the definition of a physically
-
Prefix sum on Vulkan
- the article presents how to implement a prefix sum using Vulkan compute shaders
-
Depth-Based Post Effects
- the Unity tutorial explains how to use the depth texture to apply a localized toon shading effect
-
Profiling DXR Shaders with Timer Instrumentation
- new Nvidia extension for D3D12 that provides shaders the possibility to query timestamps from with...
-
Complex Maps Masks, Details, and Normals
- next part in the Unity Tutorial series about implementing a custom scriptable rendering pipeline
-
[video] Tech Focus: What Is VRS And Is It A Next-Gen Game-Changer? Variable Rate Shad...
- the video provides an overview of Variable Rate Shading (VRS)
-
Frame Analysis - Mortal Kombat 11
- breakdown of the rendering techniques used in Mortal Kombat 11
-
It’s time we talk about TDR
- the article presents an alternative execution model that would be able to improve upon Timeout Det...
-
Fast Subsurface Scattering for the Unity URP
- the article presents the Wrapped lighting technique to emulate subsurface scattering
-
Volumetric Rendering Part 1
- this part of the article on volumetric rendering shows how to model a volume using an SDF inside o...
-
Volumetric Rendering Part 2
- the second part of the article presents how to render the volumetrics
-
UE4 - Physical light unit - Twitter Thread
- Twitter thread about the complexities of different light measuring units
-
flowchart for descriptor set setup in Vulkan
- a flowchart that provides an overview of the descriptor set binding logic of the Vulkan API
-
CUSTOM GAME ENGINES: A Small Study
- list of games studios and which custom engines they are using
-
Twitter thread - using quaternions
- the thread provides an overview of what are use cases for quaternions
-
Improving the quality of the alpha test (cutout) materials
- the article explains problems with alpha testing materials and why they tend to shrink in the dist...
-
Debugging refraction in a sphere
- presents a test setup that explains how to validate ray refraction within a sphere
-
From WebGL to WebGPU in Construct
- the article presents how WebGPU compares with WebGL
-
Ray Tracing Essentials Part 6: The Rendering Equation
- part of the ray tracing series covering the rendering equation
-
Vulkan - Debug Printf
- the Vulkan validation layer now can send printf style information from a shader to the debug callb...
-
[video] Ratchet & Clank Pixelizer FX in Unity
- the Unity video tutorial explains how to implement an effect that converts a 3D mesh into a voxeli...
-
Blurred rounded rectangles
- the article presents how to calculate a blurred version of a rounded rectangle using a distance fi...
-
UE4 Texture/Material/Cascade optimization tips
- a long document containing many tips and tricks to optimize UE4 performance
-
Floating World Shader Part 5 – Ocean Material
- the last part of a series of UE4 based posts that recreate an environment artists scene
-
The Technical Interview [LEAKED]
- the guide presents an overview of the structure and content of technical interviews
-
Bilinear texture filtering – artifacts, alternatives, and frequency domain analysis
- provides an introducing into linear blending - explaining that pixels are no signal but rather sam...
-
validating physical light units
- the article presents how to use the Mitsuba renderer to validate the results from a PBR renderer
-
godot 4.0 gets global and per-instance shader uniforms
- the article presents that Godot has now 3 update frequencies for shader parameters global, per
-
Symposium on Interactive 3D Graphics and Games 2020 papers on the web
- collection of papers from the I3D 2020 conference
-
Ray Tracing Essentials Part 5: Ray Tracing Effects
- part 5 of Nvidia ray tracing series - focuses on the presentation of different visual effects that...
-
nvidia webinar - ray tracing essentials
- Eric Haines will be giving a webinar on May 12 - explains concepts related to ray tracing, compari...
-
Intro to gfx-hal • Part 3: Vertex buffers
- part 3 of Rust gfx-hal intro series - shows all the steps required including binary serialization ...
-
Implementing a Physically Based Shading without locking yourself in
- presentation from revision - focuses on the physics of light interaction with matters
-
Introducing Low-Level GPU Virtual Memory Management
- Cuda introduces new memory management functionality
-
Secrets of Direct3D 12: Resource Alignment
- the article shows that the D3D12 alignment requirement rules have an exception for small textures ...
-
3 Techniques for Dynamically Colored UI Graphics
- the article presents 3 different techniques for Unity that allow the color of UI elements to be dy...
-
[video] A Taste of GPU Compute
- talks aimed at computer science students starting to get started with GPU technology
-
Frame Analysis - Overwatch
- the article and video and present a high-level overview of the rendering passes of Overwatch
-
Life stories: the Glimpse Renderer – part 1
- Part 1, [2](https://maxliani.wordpress.com/2020/04/16/life
-
Evolving Path of Exile's Renderer
- the talk presents an overview of rendering features developed for Path of Exile
-
Virtual machine for executing SPIR-V
- A virtual machine that is written in C enables executing of a subset of SPIR
-
Speeding Up Lighthouse 2
- presents operations that reduced the shading time required from 21.58ms to 13.52ms
-
Artists’ best practices for mobile game development
- A guide aimed at technical artists to preset best practices for geometry, texture, material and sh...
-
Optimizing Trilinear Interpolation
- the article presents implementations optimizations to speedup trilinear filtering
-
Updated Article Database Design
- The database of articles included in this series has been updated with a new look
-
NVIDIA Vulkan Ray Tracing Tutorials
- collection of Vulkan tutorials for the VK_KHR_ray_tracing extension
-
Using Nsight Systems for Fixing Stutters in Games
- the article shows how Nsight was used for debugging a frame stutter bug in the Vulkan raytracing i...
-
Optimizing VK/VKR and DX12/DXR Applications Using Nsight Graphics: GPU Trace Advanced...
- the post presents how to use Nsight to apply the Peak
-
Paper Burn Shader in Unity
- this Unity tutorial explains how to implement a burning effect for paper
-
Intro to gfx-hal • Part 1: Drawing a triangle
- part 1 of rust graphics programming series using the rust gfx hal
-
Intro to gfx-hal • Part 2: Push constants
- the second part of the tutorial series extends the example so that Vulkan push constants can be us...
-
physical lighting quantities: tying both ends
- the article presents a method that allows validation of a physical camera model against ground tru...
-
Seven Things for March 31, 2020
- collection of links and graphics community news such as ACM Digitial library being free, I3D pospo...
-
Biquadratic interpolation with independent sample weights
- the article shows how to use quadratic interpolation for depth aware upsampling
-
GTC 2020: DLSS - Image Reconstruction for Real-time Rendering with Deep Learning
- the GTC talks provide an overview of Deep Learning Super Sampling
-
Terrain and Mesh Blending in Unity
- his Unity tutorial shows one way of blending meshes that are close to the terrain with the terrain...
-
Unmasking the Arkham Knight
- the article presents a breakdown of the rendering stages found in the PC version of Batman: Arkham...
-
GTC 2020: RTXGI: Scalable Ray Traced Global Illumination in Real Time
- the GTC presentation explains how the technique aims to replace existing indirect lighting techniq...
-
ACM TechTalk - Ed Catmull & Richard Chuang
- ACM tech talk with Ed Catmull & Richard Chuang happening on Tuesday, April 14
-
An Efficient Transport Estimator for Complex Layered Materials
- the paper presents a new technique to speed up the rendering of complex, layered materials
-
A new method to construct isotropic blue-noise point sets with uniform projections
- the article presents a method for direct construction of tileable isotropic blue noise
-
a little thread on a neat way to interpolate across a triangle!
- A twitter thread that explains what barycentric coordinates are and how they are commonly used in ...
-
Hierarchical Depth Buffers
- the article presents what Hierarchical depth buffers are, what they are used for and how to genera...
-
[Video] Commandos Cone of Sight FX in Unity | GPUMAN
- the Unity tutorial explains how to implement a cone of sight that is occluded by objects
-
Links to GDC 2020 Talks and More
- collection of link resources from GDC, GTC - additional resources from Google, Intel, Ubisoft and ...
-
PIX 2003.26 – DirectX 12 Ultimate and DXIL debugging
- new Pix for Windows release with support for DXR 1.1, Mesh shaders and sampler feedback
-
NVIDIA Announces Nsight Graphics 2020.2
- GPU Trace and Nsight Aftermath now supports Vulkan
-
Augmenting shader languages for modern rendering APIs
- the author presents his domain-specific language and how it's used to extend shaders
-
Vulkan Mobile Best Practices - Management of Command Buffers and Multi-Threaded Recor...
- the article presents best practices for multithreaded command recording with Vulkan
-
WebGL best practices
- the article contains many best practices for WebGL applications
-
Introducing OpenCL™ and OpenGL® on DirectX
- Microsoft and Collabora are working together to implement an OpenCL and OpenGL layer for Mesa that...
-
Multi-Adapter with Integrated and Discrete GPUs
- presentation from Intel that presents how to use multiple adapters with D3D12
-
Variable Rate Shading Tier 1 with Microsoft DirectX* 12 from Theory to Practice
- the presentation provides an overview of Variable Rate Shading (VRS), explaining what shading and ...
-
RTX Global Illumination SDK Now Available
- Nvidia released the RTX Global Illumination (RTXGI) SDK v1.0
-
Announcing the NVIDIA Texture Tools Exporter 2020.1
- Nvidia released a new version of the DDS exporter
-
Announcing DirectX 12 Ultimate
- post containing an overview of the new D3D12 Feature level 12_2 now called DirectX 12 Ultimate
-
Shaders For People Who Don't Know How To Shader: Smooth blending with Sine
- the Unity tutorial shows how to use color masks to apply runtime coloring with smooth blending to ...
-
Ray Tracing In Vulkan
- the post provides an overview of the new Vulkan raytracing extensions
-
[video] Reinventing the Geometry Pipeline: Mesh Shaders in DirectX 12 | Shawn Hargrea...
- the presentation provides an overview of mesh shaders
-
[video] Advanced Mesh Shaders | Martin Fuller
- build upon the @Reinventing the Geometry Pipeline: Mesh Shaders in DirectX 12" talks summarized ab...
-
DirectX 12 Sampler Feedback | Claire Andrews
- the video provides an overview of the new Sampler Feedback feature added to D3D12
-
Nvidia - DirectX
- overview articles by Nvidia for D3D12 Ray Tracing, Mesh shading, Variable Rate Shading, and Sample...
-
New: Vulkan Device Generated Commands
- the article describes the VK_NV_device_generated_commands extension for Vulkan
-
Enable Ray Tracing: Two-Level Acceleration Structure
- the article presents an overview of a BVH structure for GPU raytracing
-
Fresnel Equations, Schlick Approximation, Metals, and Dielectrics
- the post presents the fresnel equations that are used for smooth metals and surfaces such as water...
-
Reverse engineering the rendering of The Witcher 3, part 18 - color grading
- Reverse engineering the color grading solution used in "The Witcher 3"
-
Getting started with shaders: signed distance functions!
- the article aimed at beginners presents how to use ShaderToy to get started with shader developmen...
-
Aliasing in computer graphics
- the article presents an overview of aliasing in digital signal processing
-
Sprite Glow/Outline Shader Breakdown
- the Unity tutorial shows how to create an outline effect for 2D sprites
-
Vulkan Best Practices: Frequently Asked Questions - Part 2
- discusses buffer allocation, update and mapping strategies
-
A Simple GPU Hash Table
- the post discusses how to write a simple GPU Hash table implementation using CUDA
-
Interior SDFs
- the article presents that combining signed distance fields of primitives using min and max operati...
-
Ray Tracing Essentials Part 4: The Ray Tracing Pipeline
- part 4 of ray tracing series by Nvidia - this episode focuses on the RayTracing APIs in D3D and Vu...
-
The Division ECHO Fx In Unity | GPUMAN
- Video tutorial for Unity that shows how to present the Echo effect (a point
-
Why DXR 1.1 vs 1.0?
- overview of what is new with DXR 1.1 - presents how to extend a depth pre
-
ASTC Format Overview
- the document provides an overview of the ASTC texture compression format
-
Automated Performance Advice for Android Games
- the article presents how to use new ARM tools to gather performance information (later versions wi...
-
How Epic Games is handling auto exposure in 4.25
- the article explains how exposure used to work in Unreal Engine 4.24
-
Reverse engineering the rendering of The Witcher 3, part 17 - the Milky Way
- the article shows how the milky way rendering from the Witcher 3
-
Paper Shader in Unity
- A Unity tutorial that focuses on the deformation of a plane to create a crumbled paper look
-
How to do boolean operations on meshes for procedural cutting of geometry!
- the post provides an overview of an algorithm for boolean operations on geometry
-
Ray Tracing Essentials Part 3: Ray Tracing Hardware
- part 3 of Nvidia ray tracing series - this part focuses on the history of ray tracing hardware and...
-
An idiot's guide to animation compression
- the article discusses techniques to compress data for skeletal animation data used for game runtim...
-
GL_NV_mesh_shader Simple Mesh Shader Example
- a very brief high-level overview of mesh shaders and necessary OpenGL extension
-
Secrets of Direct3D 12: Copies to the Same Buffer
- the article presents multiple scenarios in D3D12 where manual barrier synchronization is required
-
Borderland between Rendering and Editor - Part 1
- the post focuses on efficient and high-quality grid rendering for "The Machinery" editor
-
Writing an efficient Vulkan renderer
- copy of an article that was published in GPU Zen 2, updated for changes introduced with Vulkan 1.1...
-
Ray Tracing Essentials Part 2: Rasterization versus Ray Tracing
- video comparing rasterization and ray-tracing algorithm
-
A Survey of Temporal Antialiasing Techniques
- the paper presents an overview of Temporal Antialiasing (TAA) techniques, the history, different i...
-
Compact PBR texture packing and blending experiment with Shader Graph
- presents findings from compressing PBR material information into a single texture
-
Vulkan Mobile Best Practices: Frequently Asked Questions - Part 1
- A FAQ for Vulkan best practices guide by ARM - swap chain acquisition, image transitions, device l...
-
[video] Two Minute Papers - The Story of Light
- the 7-min video provides a walk through the history of light transport research
-
fast trisect in GLSL
- the article presents an approximation to the GLSL trisect function
-
Basic Skeletal Animation with Geometric Algebra
- the tutorial shows how to implement a skeletal animation system using Geometric Algebra (GA)
-
Packing UVs for deferred materials
- the article presents how to pack UV and gradients (ddx, ddy) into 32
-
Sprite Stencil Overlay Breakdown (Forward Renderer)
- the Unity tutorial shows how to implement a checkerboard pattern if a 2D player is behind another ...
-
sokol_gfx.h Backend Tour
- a 3 part series that provides an overview of the backend implementations of sokol_gfx for the Open...
-
Bringing HLSL Ray Tracing to Vulkan
- Nvidia added support to the DirectX Shader Compiler (DXR) to generate SPIR
-
Ways to speedup pixel shader execution
- the article presents an overview of techniques to optimize pixel shaders
-
Reverse engineering the rendering of The Witcher 3, part 16 - shooting stars
- the author presents how shooting stars in the Witcher 3 are implemented
-
Sampling Analytic Participating Media
- the in-depth article presents the physical models and approximations of participating media (such ...
-
Data Driven Rendering: Pipelines
- the newest part in article series about defining a data
-
Shader Graph Conversion : Eyeball Shader
- the Unity tutorial explains how to implement a stylized Eyeball Shader using Unity Shader Graph
-
Rendering Particles with Compute Shaders
- presents an approach to render particle effects using compute shaders
-
LunarG Vulkan Ecosystem & SDK Survey Results
- the results from the Vulkan survey have been released
-
Unity Toy Path Tracer
- the article presents how to implement a Path Tracer using the Unity Data
-
Handling Device Orientation Efficiently in Vulkan With Pre-Rotation
- the article describes how to deal with device orientation changes in a Vulkan application efficien...
-
Coherency gathering in ray tracing: the benefits of hardware ray tracking
- the article presents the problems with ray tracing in terms of divergence workflows
-
Create nice and feasible volumetric cloud in Unreal Engine 4
- the blog posts presents how to use high quality volumetric fog in UE4 to simulate ground level rol...
-
Minions Art Tutorials
- collections of art, unity tutorials and shader introduction articles
-
How to Correctly Interpolate Vertex Attributes on a Parallelogram Using Modern GPUs?
- article presents how to use barycentric coordinates in a pixel shader to manually interpoliate val...
-
Shaders For People Who Don't Know How To Shader: Deferred
- the article presents a brief overview of what deferred shading is
-
GPU resources
- collection of gpu resources - links to details about hardware, shader languages, and WebGPU
-
Reaching for the stars
- the Unity article describes how to generate a stylized procedualr skybox
-
Instancing and Material Property Blocks
- the Unity tutorials shows how to use Material Property Blocks
-
Four Color Gradient
- beginner Unity shader tutorial that shows how to implement a gradient made from 4 colors forming a...
-
Journey Sand Shader: Ripples
- last part of Unity shader torial that shows how to add ripples into the sand dunes
-
How to Calculate Shader Graph Normals
- Unity tutorial that shows how to calculate new normals from a vertex shader
-
Generating Perfect Normal Maps for Unity (and Other Programs)
- the article shows what needs to be considered when baking normal maps for use with separate applic...
-
A Fun 2d Rotation Matrix Derivation
- the article shows a connection between "2D cross product", Complex Numbers and 2D rotation matrice...
-
Normal matrices are overrated
- the tweet shows an alternative formulation for a normal transformation matrix (required when non
-
Dissolve Shader Breakdown
- the Unity shader breakdown explains how to dissolve a mesh using a combination of noise and height...
-
A Scalable Real-Time Many-Shadowed-Light Rendering System
- Siggraph presentation showcasing a shadow system that enables thousands of shadowed
-
Wave Function Collapse tips and trick
- the article presents an overview of the Wave Function Collapse algorithm
-
Shadow Terminator in Takua
- the article presents a comparison between techniques to solve the harsh shadow terminator problem
-
Approximating Subsurface Scattering With Spherical Gaussians
- the article shows a breakdown on how to approximate subsurface scattering from a point light using...
-
Separate your filters! Separability, SVD and low-rank approximation of 2D image proce...
- the article presents the basics of Singular Value Decomposition
-
Volumetric Clouds Resources List
- a collection of articles, presentations and other resources covering volumetric cloud render...
-
Building WebGPU with Rust
- the presentation provides an overview of the development of WebGPU
-
2D Sprite Overlay Effects
- short Unity tutorial that shows how to use sprites to simulate screenspace effects such as d...
-
Baked Light Light Maps and Probes
- the tutorial shows how light baking is implemented in Unity
-
Optimizing Game Development with GPU Performance Events
- the article presents Do’s and Don’ts for the use of GPU performance events
-
World space UVs & Triplanar Mapping
- the Unity tutorial shows how WorldSpace positions can be used to texture planar object
-
Vulkan: Bad Practices
- the article presents several Vulkan patterns that cause reduced performance and should be av...
-
Progressive Least-Squares Encoding for Linear Bases
- the paper presents a GPU compatible algorithm for processive approximation least
-
Learning from data
- the article presents how ordering mesh data can influence rendering performance
-
Using AMD FreeSync™ Premium Pro HDR: Code Samples
- the article shows how to enable AMD FreeSync using D3D12 and Vulkan
-
Khronos Group Releases Vulkan 1.2
- Vulkan 1.2 has been released - this release promotes [23 extensions](https://www.khronos.org/regis...
-
D3D12 Translation Layer and D3D11On12 are now open source
- Microsoft open-sourced two layers to help to port to D3D12
-
Performance Evaluation of Acceleration Structures for Cone Tracing Traversal
- the paper examines k-d trees and bounding volume hierarchies
-
Vulkan Timeline Semaphores
- the article discusses the new timeline semaphore synchronization API included in Vulkan 1.2
-
Calculates view space 3D sphere extents on the screen
- the code snippet shows how to screenspace extends of a sphere from view space
-
Projective Geometric Algebra Done Right
- the article presents how Grassmann (Geometric) Algebra extends four
-
Stylized Lava Shader
- the Unity tutorial explains how to achieve a stylized lava effect
-
Shader Graph Stylized Lava
- the Unity tutorial shows to implement the stylized lava effect discussed in the previous article u...
-
An Opinionated Post on Modern Rendering Abstraction Layers
- the author presents his opinions about how a rendering abstraction layer should be designed
-
Accurate Normal Reconstruction from Depth Buffer
- presents an improved precision method for normal reconstruction from depth buffers
-
HLSL Viewport Clamping trick
- the article presents a few approaches to skybox rendering
-
Ray Guiding for Production Lightmap Baking
- the paper introduces a technique for improving the computation time required for lightmap baking
-
Real-Time Ray-Tracing in WebGPU
- the article shows how to use Node bindings to enable RTX support when using WebGPU
-
UV-Based Nodes
- the article presents the shader nodes from Unity ShaderGraph system
-
Correct sRGB Dithering
- the article presents code and explains the logic behind correct dithering patterns that preserve t...
-
Clustered shading evolution in Granite
- the article shows an overview of deferred shading techniques
-
Radeon™ GPU Profiler 1.7
- new release of AMD profiler that introduces a new pipeline overview view and adds new overlays for...
-
How to Optimize your Oculus Quest App w/ RenderDoc: Walkthroughs of Key Usage Scenari...
- the article shows how to use RenderDoc to identify issues and how to alleviate them
-
Inverse Lerp and Remap
- a short Unity tutorial that explains inverse lerp function
-
NVIDIA VRSS, a Zero-Effort Way to Improve Your VR Image Quality
- the latest Nvidia driver update introduce Variable Rate Supersampling for D3D11 + MSAA application...
-
[video] Shader Coding: Over the Moon - Part 2
- the second part of a shadertoy video tutorial - the tutorial extends the scene to render multiple ...
-
[video] Deriving the SDF of a Line Segment
- this video tutorial shows how to derive the signed distance field for a line segment
-
Journey Sand Shader: Glitter Reflection
- next part in Unity tutorial series about the rendering of sand
-
Mip Map Folding
- a brief summary of mipmapping - shows how mipmapping causes details in glitter effect of sand to b...
-
Alpha to Coverage or Anti-Aliased Cutout - TUTORIAL
- the Unity tutorial shows how alpha to coverage allows improved edges on vegetation
-
Vulkan hardware database feature update
- update to Vulkan database shows the first driver version an extension/feature has been introduced
-
Raw WebGPU
- the article shows how to use the WebGPU API to implement everything required to render a colored t...
-
How to learn graphics programming (but not in a hurry): self-study edition!
- Twitter thread about the authors' recommendations about learning graphics programming
-
Physically based shading references, at the end of 2019
- collection of resources covering physically based shading
-
Toon Glass Shader Breakdown
- the Unity tutorial shows to create a toon style glass shader using shader graph
-
The polygons of Another World
- the article shows how the 1991 game Another World is being rendered
-
How to Optimize your Oculus Quest App w/ RenderDoc: Walkthroughs of Key Usage Scenari...
- the article shows a collection of usage scenarios and explains what should be done for best ...
-
Draw Anti-aliased Lines with Geometry Shader
- the article shows how to render anti-aliased lines
-
Journey Sand Shader: Specular Reflection
- part 4 of sand rendering tutorial - adds support for Rim Lighting, Fresnel Reflectance, and ...
-
Simulated Exposure Fusion
- the paper extends the Exposure Fusion technique to operate on a single image
-
Tile-based optimization for post processing
- the article presents a tile-based classification system for post
-
Technically Art: Issue 50 (03.01.2020)
- collection of tweets related to VFX, shaders, and game art
-
Applying For Technical Art Jobs
- the article provides an overview of the technical artist role
-
Two Shader Compilers of Direct3D 12
- the article shows the two different shader compilers for D3D12: the FXC and DXC compiler
-
Height Maps & Parallaxing
- the article explains the parallax effect and how it's different from normal mapping
-
A new tessellator
- the article describes the algorithm rewire of a vector to triangle mesh tesselator written i...
-
Thermal/ Stealth Vision Effect
- the Unity tutorial shows how to implement a thermal view effect
-
Technically Art: Issue 49 (27.12.2019)
- collection of tweets related to VFX, shaders, and game art
-
Procedural Generation - Unity3d Procedurally Generation For Beginners With Random Ins...
- A unity video tutorial that shows how to generate a circle procedurally
-
Roblox graphics APIs 2019 - What does the future hold?
- an updated article that presents the latest numbers and what APIs Roblox is currently suppor...
-
Sampling Burley's Normalized Diffusion Profiles
- the article presents how to inverse the CDF of the Disney SSS
-
Open-Source Ray Tracers and Path Tracers
- a list of open-source ray and path tracers
-
Developers Show Off Amazing Real-Time Ray-Traced Projects in New DXR Spotlight Contes...
- collection of games that have been selected by Nvidia as excellent showcases for the use of ...
-
Ray Tracing Essentials, Part 1: Basics of Ray Tracing
- the first part of the video series that will explain the basics of ray
-
Mitsuba 2: A Retargetable Forward and Inverse Renderer
- the recording of a talk presents an overview of the architecture of the Mitsuba 2 renderer
-
Part 23: Intro to Unity's Specular Workflow
- the unity tutorial provides a brief overview of the specular workflow compared with the meta...
-
The Simple, Flexible, Octasphere
- the article shows a UV sphere, icosphere and proposes the octasphere
-
Matrices for Tech Artists, non Affine Transformations
- the article presents transformations around an arbitrary axis and points
-
Digital Foundry's Best Game Graphics Of 2019: The Year's Best Tech In Review!
- video review by Digital Foundry of the games released in 2019s
-
Writing a ray marcher in Unity
- the video tutorial shows how to write a ray marcher in a unity pixel shader
-
Integrating FidelityFX into the Ego Engine
- the article presents how to integrate FidelityFX Contrast Adaptive Sharpening (CAS) compute ...
-
Light Saber Breakdown
- the article shows how to use a vertex shader to animate the vertices for a lightsaber effect
-
AMD “Vega” 7nm Instruction Set Architecture documentation
- Instruction Set Architecture provides an overview of how Vega architecture is designed
-
PowerVR SDK and Tools 2019 Release 2 now available
- the article provides an overview of new features of the PowerVR SDK
-
Three years of Metal
- the article provides an overview of the experience using metal over the last 3 years
-
Technically Art: Issue 47 (13.12.2019)
- collection of tweets related to VFX, shaders, and game art
-
Part 22: Skyboxes
- the Unity tutorial shows how to create a skybox shader that uses a gradient defined by two colors
-
Ray tracing on the WEB
- a web-based ray tracing framework that exposes programmable stages based on GLSL for rapid prototy...
-
Probability Theory for Physically Based Rendering
- the blog details the mathematical approach of Monte
-
Probability Theory for Physically Based Rendering Part 2
- the article extends the knowledge from part 1 to the domain of solving the rendering equation
-
Writing a Shader Effect Language Part 3: Materials
- the article presents an exploration of a material system designed for Vulkan requirements
-
Collection of light transport papers
- an extensive collection of light transport papers
-
Bezier Triangles
- the article shows the possibility of using Bezier Triangles to store arbitrary and use this as a l...
-
PIX 1911.27 – New Buffer Formatter and Capture from Launch
- new PIX version allows the creation of custom buffer formats and saves/restore those
-
collection of tweets showcasing a large number of effects, games and technical art re...
- collection of tweets showcasing a large number of effects, games and technical art resources...
-
IMG A-Series: the GPU for generation 2020
- new GPU architecture by Imagination Technologies (PowerVR)
-
A New Language for Sparse Data
- the article presents an overview of the Taichi programming language
-
Proof of the Sampling Method for Visible GGX
- the article describes the Visible GGX distribution (vGGX) sampling method
-
How to Optimize your Oculus Quest App w/ RenderDoc: Getting Started + Frame Capture
- begins with an overview of RenderDoc functionality
-
My take on shaders: Grass Shader (Part II)
- part 2 of the grass shader, part 1 was discussed in issues [105](https://www.jendrikillner.c...
-
Matrices for Tech Artists, a Cheat Sheet
- the article provides an overview of matrices
-
Rust Game Series - Part 5 - D3D11 Device and Swap Chain creation
- part of Rust game programming series - the article shows how to call D3D11 from Rust
-
PowerVR PerfDoc – Performance Validation for PowerVR
- fork of the PerfDoc performance layer to detect performance issues on PowerVR hardware
-
Exploring SculptrVR’s efficient lighting solution for the Oculus Quest
- the article provides an overview of the lighting model used by SculptrVR
-
NVIDIA Variable Rate Shading Demonstrated in Autodesk VRED
- the article provides an easy to understand overview of Variable Rate Shading
-
Partial Derivatives (fwidth)
- the tutorial explains the ddx and ddy shader functions
-
Making a Glass Shader, Part 1: GrabPass & Refraction
- the Unity tutorial shows how to use transparency to create a look through the object
-
Making a Glass Shader, Part 2: Highlights & Reflections
- part 2 of the shader glass material shader tutorial with Unity
-
Directional Lights Direct Illumination
- this Unity tutorial shows how to use the scriptable rendering pipeline to implement up to 4 direct...
-
YUV sampling in Vulkan – a niche and complicated feature – VK_KHR_ycbcr_sampler_conve...
- the article provides a brief overview of the YUV/YCbCr colorspace and a few complications with it ...
-
Positional Effects (Scattered Objects Moving Back / Growing Flowers)
- brief unity tutorial that shows how to implement effects that are based on the player position
-
RGB/XYZ Conversion Matrix Accuracy
- the article shows the matrices between XYZ colors and sRGB colors
-
PC Rendering Techniques to Avoid when Developing for Mobile VR
- the article presents an overview of techniques that are not a good fit for mobile VR applications
-
Technically Art: Issue 44 (22.11.2019)
- collection of tweets showcasing a large number of effects, games and technical art resources
-
Part 20: Post Processing Effects & Chromatic Aberration
- a unity tutorial that explains how to create a post
-
Normal map compositing using the surface gradient framework in Shader Graph
- the article shows how the surface gradient framework (discussed in issue [102](/post/graphics
-
Vulkan Releases Extension to Expose Cross-Vendor Performance Metrics
- a new Vulkan extension that allows developers to query performance metrics from the GPU
-
Applying for Entry Level Graphics Jobs in Games
- overview of advice by the author on what candidates should be focusing on if they are interested i...
-
Open-Source Real-Time Rendering Engines and Libs
- list of open-source rendering engines and helper libraries
-
[#78] Podcast time! & PBR Theory for Artists - Part one
- podcast episode for artists - contains a collection of links to other articles related to PBR rend...
-
The RTX Shader Binding Table Three Ways
- provides an overview of the raytracing execution model
-
2019 Reboot Develop Red
- links to Vulkan presentations and videos from Reboot Develop Red
-
Latency of 30 ms Matters More Than Refresh Rate Above 60 Hz for First Person Targetin...
- research by Nvidia that investigates the influence of latency reduction and higher frame rates in ...
-
Instanced Line Rendering
- the article explains how to render lines - extends the method to support different styles of line ...
-
DeepFovea: Neural Reconstruction for Foveated Rendering and Video Compression using L...
- the paper presents a new technique that uses a neural network to reconstruct foveated rendering fr...
-
Coming to DirectX 12: D3D9On12 and D3D11On12 Resource Interop APIs
- the article provides an overview of the new API that allows users to request the underlying D3D12 ...
-
Journey Sand Shader: Sand Normal
- the article proposes a technique that uses a random texture to perturb the normals of dunes to sim...
-
Vulkan Mobile Best Practices - Descriptor and Buffer Management
- the article provides an overview of how Vulkan descriptor set management influences CPU performanc...
-
Coming to DirectX 12: More control over memory allocation
- D3D12 is adding two new flags for memory heap creation
-
Improving Particle Systems on PowerVR
- brief article explains how to detect particle overdraw using the PowerVR profiler
-
Technically Art: Issue 43 (15.11.2019)
- collection of tweets showcasing a large number of effects, games and technical art resources
-
On Histogram-Preserving Blending for Randomized Texture Tiling
- the paper presents a modification of histogram-preserving tiling algorithm discussed in [issue 45]...
-
Coming to DirectX 12— Mesh Shaders and Amplification Shaders: Reinventing the Geometr...
- the article explains the problem with the classic GPU geometry pipeline
-
DirectX Raytracing (DXR) Tier 1.1
- the article explains what has been added with DXR tier 1.1
-
Vulkan-Guide
- new Vulkan guide by Khronos - a crucial starting point for getting started with Vulkan
-
Coming to DirectX 12— Sampler Feedback: some useful once-hidden data, unlocked
- the article presents the use-case of the streaming system and texture space shading
-
What are use-cases of Texture-Space Shading in DX12, based on current research?
- Twitter thread about possibilities of texture-space shading
-
Ray Guiding for Production Lightmap Baking
- the paper introduces a technique for improving the computation time required for lightmap baking
-
Image-based Remapping of Spatially-varying Material Appearance
- the paper introduces a technique for translation of materials between different renderers
-
[video] Rounding Corners in SDFs
- the video shows how to modify the SDF of any geometrical shape to make its edges more rounded
-
Dev Preview of New DirectX 12 Features
- the post introduces new D3D12 features available with latest win10 preview version
-
Arm donates Vulkan Best Practice for Mobile Developers to The Khronos Group
- the ARM developed sets of samples to showcase best practices for Vulkan on mobile is now open
-
Vulkan Releases Unified Samples Repository
- Khronos published a unified Vulkan Samples Repository
-
My take on shaders: Grass Shader (Part I)
- the article shows the Unity shader implementation for stylized and unlit grass
-
ray tracing a tiny procedural planet
- starts by showing how to create a small 2D world procedurally
-
[video] Deriving the SDF of a Box
- the video presents how to derive the SDF for a box
-
SIGGRAPH 2019 Highlight: Finding a Practical Hybrid Anti-Aliasing Algorithm
- summary of SIGGRAPH 2019 for a hybrid solution between temporal anti
-
srgb eotf: pure gamma 2.2 function or piece-wise function?
- the article presents the different meaning of the term gamma in different color contexts
-
Flow Control on PowerVR – Optimising Shaders
- presents an overview of the difference between static and dynamic branching
-
Another Metaballs2 update
- introduction of marching cube pre-pass stage reduces the mesh shader example GPU time by 33% to 50...
-
Technically Art: Issue 40 (25.10.2019)
- collection of tweets related to VFX, shaders, and game art
-
Mesh Texture painting in Unity Using Shaders
- the author presents his solution on how to implement painting onto textures using unity
-
A Look Inside D3D12 Resource State Barriers
- the article presents the D3D12 resource state promotion and decay rules related to the common reso...
-
GPU Ray Tracing in an Afternoon
- the article presents how the author took the CPU implementation of Ray Tracing in a Weekend and co...
-
RLSL - A rust to SPIR-V compiler
- a brief presentation by Embark Studios showing RLSL, a subset of rust compiled to SPIR
-
Vulkan Mobile Best Practice: Picking the Most Efficient Load/Store Operations
- the article describes how the architecture of mobile GPUs is different from PC
-
Raw DirectX 12
- the tutorial shows the steps necessary to render a single triangle using the D3D12 API
-
Massively Parallel Path Space Filtering in Game Development
- excerpt of Siggraph 2019 talk that proposes averaging of neighboring rays into cells
-
Radeon™ GPU Analyzer 2.3 for Direct3D® 12 Graphics
- the article shows how to use the Radeon GPU Analyzer to generate hardware native ISA disassembly, ...
-
GOON – VOXEL OBJECT
- the article describes a demo scene effect that uses a 2D height map on a flat 2D shaded object to ...
-
Handling Depth for Spheretracing
- next part of tutorial series shows how to extend a sphere tracing implementation in Unity to use t...
-
A Journey Into Journey’s Sand Shader
- part 1 of a Unity tutorial series about the sand rendering in Journey
-
Surface Gradient Based Bump Mapping Framework
- a mathematical framework for more consistent layering of bump/normal maps using linear surface gra...
-
Emulating a fake retro GPU in Vulkan compute
- high-level system discussion of a retro GPU emulation implemented in Vulak compute shaders
-
RenderDoc - Version v1.5
- new RenderDoc version allows explicit GPU playback selection
-
Real-time Rendering of Layered Materials with Anisotropic Normal Distributions
- proposal of approach for rendering layered materials
-
Living with Vulkan and DirectX 12
- the post describes the perspective from Stardock on D3D12/Vulkan vs. D3D11
-
Progressive Real-Time Rendering of One Billion Points Without Hierarchical Accelerati...
- proposes a real-time solution to rendering unstructured point clouds
-
Denoising as a Building Block
- provides an overview of the foundations of denoising techniques
-
An Introduction To Real-Time Subsurface Scattering
- in-depth article that provides an overview of subsurface scattering techniques used for games
-
Text Rendering Hates You
- the author provides an overview of problems that are encountered and make text rendering system ve...
-
Desertscape Simulation
- presents a model to simulate erosion and transport simulation for sand due to wind
-
Flexible Ray Traversal with an Extended Programming Model
- the paper proposes the addition of a Traversal Shader stage to the DXR model
-
Half The Precision, Twice The Fun: Working With FP16 In HLSL
- the article shows how to use 16-bit floating-point types on PC hardware
-
Technically Art: Issue 37 (04.10.2019)
- collection of tweets related to VFX, shaders, and game art
-
Fractional Brownian Motion
- the article describes the characteristics of Fractional Brownian Motion
-
Physically-Based Rendering with PowerVR – Part 2
- the article shows the precalculations steps that enable PBR rendering on mobile devices
-
Strand-based Hair Rendering in Frostbite
- the presentation shows the new WIP hair rendering system
-
Local linear models and guided filtering – an alternative to bilateral filter
- the article presents guided filtering as an alternative to a bilateral filter
-
PIX 1909.23 – New timing capture features, performance improvements and bug fixes
- the new PIX CPU timeline view shows when a thread context switch happened and to where
-
Ray Tracing Denoising
- overview of denoising techniques in raytracing applications
-
How powerful can WebGL be in comparison with native OpenGL?
- performance comparison of a ray tracer application using native OpenGL against WebGL (Chrome, Fire...
-
Custom Render Pipeline Taking Control of Rendering
- Unity tutorial showing how to set up a custom render pipeline
-
Technically Art: Issue 36 (27.09.2019)
- collection of tweets related to VFX, shaders, and game art
-
Multi-resolution Ocean Rendering in Crest Ocean System [280 MB pptx]
- provides an overview of the ocean rendering system
-
Improved normal reconstruction from depth
- the article presents what kind of artifacts happen when reconstructing normals from world space po...
-
Non-linear sphere tracing for rendering deformed signed distance fields
- the paper presents a method that allows SDFs to be combined with techniques such as linear skinnin...
-
Metal Enhancements for A13 Bionic
- overview of what has been improved in the latest apple GPU architecture and metal
-
Selectively Metropolised Monte Carlo light transport simulation
- the paper presents a new scheme that allows selectively combining different Monte Carlo rendering ...
-
Vertex Assembly and Skinning
- the article explains how vertex shaders in "Our Machinery" engine is handled
-
Geometry Reinvented with Mesh Shading
- excerpt from the [Siggraph talk](https://developer.nvidia.com/siggraph/2019/video/sig918
-
DRED v1.2 supports PIX marker and event strings in Auto-Breadcrumbs
- DRED can now include PIX markers - additional string events can be attached to markers
-
Real-time lightmap baking
- the presentation explains how lightmap baking has been implemented in [Wicked Engine](https://gith...
-
Updated Metaballs2 demo
- Metaballs2 demo has been updated - the demo shows how to use mesh shaders and now provides a compu...
-
The making of Gears 5: how the Coalition hit 60fps - and improved visual quality
- interview discussing the details of the Gear 5 implementation
-
Believable Caustics Reflections
- tutorial explaining how to implement a Caustics effect in unity
-
Diagnosing performance issues in Unity
- the article presents an overview of performance methodology to detect performance issues earlier
-
WebGPU and WSL in Safari
- overview of the state of WebGPU in safari - Web Shading Language is a new text
-
Mip-mapping is hard – importance of keeping your quads full
- looks at the behavior of texture sampling in divergent code flows on different hardware
-
Overview of new additions to Vulkan SDK 1.1.121
- GPU assisted validation for VK_EXT_buffer_device_address
-
Mitsuba 2: A Retargetable Forward and Inverse Renderer
- the paper discusses the design of the Mitsuba 2 renderer
-
Technically Art: Issue 34 (13.09.2019)
- collection of tech art tweets, many gifs, and videos showing a large variety of effects and art st...
-
Variance-aware multiple importance sampling
- the paper proposes a new weighting heuristic for multiple importance sampling
-
Integral formulations of volumetric transmittance
- the paper presents novel integral formulations for volumetric transmittance
-
Engineering Career Guide [LEAKED]
- guide by Roblox for the career development of rendering engineers
-
Watch the Unity Graphics Sessions from SIGGRAPH 2019
- summary and links to the video recordings from Unity talks at SIGGRAPH 2019
-
D3D12 Memory Allocator 1.0.0
- the first release of a new open-source D3D12 memory allocator project by AMD
-
My take on shaders: Water Shader
- a walkthrough that explains a Unity water shader implementation
-
The Sharpening Curse
- the article discusses the image quality difference between film and realtime rendering
-
hybrid screen-space reflections
- the article presents a hybrid technique between Screen space reflections and ray
-
Raw OpenGL
- OpenGL tutorial that teaches the concepts required to render a textured mesh
-
DirectXShaderCompiler - prebuild releases
- Microsoft is now offering pre-built binaries of the shader compiler on GitHub
-
Faster Shadow Rays on RTX
- the article presents different techniques to generate ray traced shadows
-
Path Tracing Review
- intro to computer graphics from University of Waterloo summarized in one slide deck
-
Mesh Shading: Towards Greater Efficiency Of Geometry Processing (pptx)
- a brief historical look at the rendering pipeline
-
Interactive Wind and Vegetation in 'God of War' (2GB pptx!)
- overview of the interactive wind system in God of War
-
Creating the Atmospheric World of Red Dead Redemption 2: A Complete and Integrated So...
- a presentation covering the volumetric effects of Red Dead Redemption 2
-
AMD RDNA 1.0 Instruction Set Architecture
- instruction set documentation for the new AMD RDNA GPU architecture
-
Resident Evil 2 Frame Breakdown
- frame breakdown of a Resident Evil 2 - presents the different stages found in the frame
-
Split-free occlusion sorting
- the article discusses how to build a correct CPU occlusion sorting structure
-
Are we done with Ray Tracing?
- slides for Siggraph 2019 course - talking about the state of ray
-
Chasing Triangles in a Tile-based Rasterizer
- the detailed article explains how to tile-based rasterization works
-
siggraph course: path tracing in production 2019
- course notes for the Siggraph 2019 course - part 1 focuses on the necessary background knowledge ...
-
Technically Art: Issue 27 (26.07.2019)
- collection of VFX tweets of the week - tutorials, demos, and showcases of great looking effects
-
Differences in memory management between Direct3D 12 and Vulkan
- the article discusses memory management in Vulkan and D3D12
-
Fresnel Equations Considered Harmful
- presents problems with the Fresnel equations when applied to sRGB data
-
Shadertoy media files
- the article contains the links to the build-in Shadertoy media files
-
Axis-Aligned Bounding Tetrahedra and Octahedra for Ray Tracing Bounding Volume Hierar...
- presents Axis-Aligned-Bounding-Tetrahedron (AABT) and Axis
-
Robust pipeline cache serialization
- provides an overview of Vulkan pipeline caching - list of possible problems that can be encountere...
-
High-Performance Graphics 2019
- slides for the High-Performance Graphics 2019 conference are now available
-
Physically Based Shading
- A Shadertoy that shows the different components the define physically based rendering
-
GPU-Assisted Validation
- GPU based validation in Vulkan has been updated - now supports more cases, the article explains wh...
-
Radeon GPU Analyzer 2.2 for Direct3D®12 Compute
- Radeon GPU Analyzer can now compile compute shaders to the target ISA without having to have the G...
-
Dot products and planes
- an article explains the dot product and how it relates to the plane equation
-
Dot product and its relationship to matrices
- shows how the dot product and axis define matrices
-
How to ray-intersect a transformed geometry, without actually transforming it: a geom...
- the article shows that with the inverse-transformation applied to a ray origin and direction
-
Command buffers for multi-threaded rendering
- explains a renderer architecture that separates command generation from execution
-
Real-Time Hybrid Hair Rendering using Vulkan
- a paper about a new hair rendering technique - the technique is a hybrid between strand
-
Rendering Line Lights
- explains how to implement line lights - using a Most Representative Point (MRP) approximation
-
New in D3D12 – Motion Estimation
- D3D12 motion estimation support exposes access to the motion estimation hardware found in supporte...
-
Using Basis Universal Texture Compression with Metal
- shows how to compile the Basis command line tool
-
GPU timing data in New Timing Captures
- the timing capture view now supports GPU workload visualization
-
SIGGRAPH 2019 Ray Tracing Roundup
- updated page with all raytracing related sessions, talks and papers from Siggraph 2019
-
[Twitter] Low-Level Rendering API discussion
- Twitter thread about modern APIs - strengths, weaknesses, opinions, and suggestions for an alterna...
-
Spectral Primary Decomposition for Rendering with sRGB Reflectance
- the paper presents a new technique that allows the generation of spectral data from sRGB source da...
-
A Simple Spectral Renderer
- open source and well-commented implementation of a spectral path tracer
-
[video] Turn your Frame Rate up to 60 with Vulkan on the Nintendo Switch: – Reboot De...
- Vulkan techniques used to achieve better performance on the Nintendo Switch
-
[video] Halcyon: Rapid innovation using modern graphics – Reboot Develop 2019
- video recording of talk about the SEED halyon engine, was discussed in [issue
-
geometry processing in the wild
- slides that present common problems with mesh data
-
HLSLexplorer 1.01 - UI improvements and D3D12 rendering backend
- HLSLexplorer, a tool which helps in understanding how HLSL code gets translated to hardware assemb...
-
Interactive Map Shader: Vertex Displacement
- part 1 of a Unity tutorial that shows how to create 3D geometry offset from a texture and corresp...
-
Technically Art: Issue 25 (05.07.2019)
- collection of VFX tweets of the week - tutorials, demos, and showcases of great looking effects
-
Nested Dielectrics
- presents a technique that improves the handling of nested dielectrics in ray
-
ShaderGraph Conversion - Custom Functions(Toon Lighting Example), Vertex Colors(Specu...
- the tutorial shows to create custom nodes in Unity Shader Graph
-
Render Graph Optimization Scribbles
- presents an algorithm for scheduling work in a render graph architecture
-
Debugger Extension for DRED
- extension for WinDbg that enables debugging of Device Removed Extended Data
-
Ambient Dice Specular Approximation
- presents how to use the Ambient Dice to store the GGX specular component
-
Optimal Multiple Importance Sampling
- derives weighting functions for Multiple Importance Sampling (MIS) that minimize the varia...
-
Orthogonal array sampling for Monte Carlo rendering
- a new strategy for the generation of stratified samples
-
Generating Blue Noise Textures With Void And Cluster
- the article explains how to generate high-quality blue noise
-
Level of Detail Cross-Fading Geometry
- next part in the article series about the implementation of a scriptable render pipeline in Unity
-
Using AMD FreeSync 2 HDR: Gamut Mapping
- explains gamut mapping techniques - difference perceptual and clipping techniques
-
Reverse engineering the rendering of The Witcher 3, part 15 - fog
- shows how the fog in The Witcher 3 has been implemented
-
SIGGRAPH 2019 Ray Tracing Roundup
- list of sessions from SIGGRAPH 2019 that are related to ray tracing techniques
-
New Vulkan® Extensions in Driver 19.6.2
- new extensions in AMD driver - VK_EXT_full_screen_exclusive, allows application to enter fullscree...
-
PIX 1906.14 – GPU Timing in New Timing Captures
- support for GPU timing data in the new timing capture view
-
Glint Rendering based on a Multiple-Scattering Patch BRDF
- new glint integrator for specular surfaces using multiple
-
Announcing HighOmega v3.0 with RTX and Voxel-based Hybrid Path-tracing Support!
- shows a new version of voxel-based path-tracing based graphics engine
-
A Low-Discrepancy Sampler that Distributes Monte Carlo Errors as a Blue Noise in Scre...
- new path tracing sampler techniques - distributed per
-
Distributing Monte Carlo Errors as a Blue Noise in Screen Space by Permuting Pixel Se...
- the paper builds on the techniques described in the previous article
-
Vulkan Textures Unbound
- describes how to support unbounded arrays of textures in Vulkan
-
Spheretracing Basics
- shows how to implement raytracing against a Signed Distance Field (SDF)
-
Interactive Generation of Path-Traced Lightmaps
- a master thesis that describes a progressively path
-
Spherical Radial Basis Functions for Lighting
- explains how to extend the Ambient Dice basis function to store and evaluate both diffuse and spec...
-
What's up with my branch on GPU?
- explains how branching on GPUs is commonly implemented
-
Normal Mapping Using the Surface Gradient
- describes the surface gradient framework - a framework for robust processing of height maps, heigh...
-
Sampling projected spherical caps with multiple importance sampling
- explains how to combine sampling of projected spherical caps and multiple importance sampling
-
Technically Art: Issue 22 (14.06.2019)
- collection of VFX tweets of the week - tutorials, demos, and showcases of great looking effe...
-
Alpha compositing, OpenGL blending and premultiplied alpha
- an updated article explaining color blending with OpenGL
-
RDNA - new AMD GPU architecture
- hardware overview of the new architecture for AMD GPUs
-
Introducing Metal 3
- the article shows what changes have been introduced with Metal 3
-
What’s New in Metal (2019)
- the article shows what changes have been introduced with Metal 3
-
RTX Beyond Ray Tracing: Exploring the Use of Hardware Ray Tracing Cores for Tet-Mesh ...
- the paper investigates using the raytracing hardware support added in Turing GPUs to acceler...
-
Dissecting A Plague Tale: Innocence
- breakdown of two frames in the game - very little instancing
-
Triangles Are Precious - Let's Treat Them With Care
- the presentation explains the stages a triangle is passing through while being processed for rende...
-
OS Variable Refresh Rate
- Windows Version 1903 adds a new variable refresh rate option
-
3D Game Rendering 101
- beginner level explanation of the rendering pipeline for games
-
Pipeline Management
- explains what a Vulkan pipeline cache is, why developers want to use it
-
Advances in Rendering, Graphics Research and Video Game Production
- keynote from I3D presenting the challenges modern open world games such as FarCry need to solve
-
Dynamic Diffuse Global Illumination Part I
- part 1 of article series about Global Illumination
-
Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields
- a paper about Dynamic Diffuse Global Illumination solution
-
Tips and Tricks: Vulkan Dos and Don’ts
- collection of best practices and pitfalls when using Vulkan on Nvidia hardware
-
Visualizing Warping Strategies for Sampling Environment Map Lights
- the article presents a comparison between two different sampling strategies for environment maps
-
optimising a aaa vulkan title on desktop
- presents an overview of what requirements need to be met on AMD to enable color compression on ren...
-
Make Your Game Friendly for Graphics Debugging and Optimization
- presentation with a collection of options and debug modes that help with debugging
-
Leveraging Ray Tracing Hardware Acceleration In Unity
- presents how ray tracing is integrated into the High Definition Render Pipeline (HDRP)
-
Vulkan NV Ray Tracing with HLSL
- shows how to use HLSL to write a raytracing implementation using the Nvidia Vulkan extension
-
The Heretic - Making of a real-time short film: digital humans and vfx characters
- presents how the Unity demo was made - overview of skin/hair/eye/teeth shading
-
Bindless Deferred Decals in The Surge 2
- overview of the deferred decal solution - uses bindless resource binding model
-
NVIDIA Announces Nsight Graphics 2019.3!
- a new release, range profiler provides detailed metric graph about the performance of the applicat...
-
Video Series: Path Tracing for Quake II in Two Months
- summary of the Quake II path tracing implementation
-
Easy VRS Integration with Eye Tracking
- Nvidia helper library to simplify the integration of Variable Rate Shading
-
What Makes a (Graphics) Systems Paper Beautiful
- the author presents what makes a graphics system paper
-
View-Warped Multi-View Soft Shadows for Local Area Lights
- new point based shadowing algorithm for local area lights
-
Baked Shadows Mixed Lighting
- tutorial series covering Unity's scriptable render pipeline
-
Using Moments to Represent Bounded Signals for Spectral Rendering
- new representation approach for spectra - shows use in offline raytracing and real
-
Graphics Programming Weekly - Database
- database with articles that were previously covered in Graphics Programming Weekly
-
Google and Binomial Partner to Open-Source Basis Universal Texture Format
- open source release of the Basis Universal texture codec
-
Technically Art: Issue 19 (24.05.2019)
- collection of VFX tweets of the week - tutorials, demos, and showcases of great looking effects
-
GPU Lightmapper: A Technical Deep Dive
- presents the GPU based light mapper implemented in Unity, based on Radeon Rays
-
frostbite hair rendering and simulation - part 1
- overview videos of the hair rendering in Frostbite
-
Approximating Global Illumination with Real-Time Ambient Occlusion
- master thesis trying to answer if raytraced real-time ambient occlusion is a viable option for gam...
-
Understanding the Need for Adaptive Temporal Antialiasing (ATAA)
- proposed antialiasing technique combines rasterization with ray tracing
-
Boost rendering performance with Variable Rate Shading | Game Developers Conference 2...
- Microsoft GDC 2019 presentation about variable rate shading (VRS)
-
direct delta mush skinning and variants
- a new skinning algorithm that removes the need for iterative calculations from delta mush skinning...
-
Multi-GPU Rendering with Vulkan API
- a master thesis that demonstrates how to use multiple GPUs with Vulkan
-
3D Game Shaders For Beginners
- shader tutorial aimed at beginners that teaches shader fundamentals using Panda3D and GLSL
-
Using AMD Freesync 2 HDR: Tone Mapping
- explains tone mapping terms and how the human vision perceives changes in luminance
-
blockwise multi-order feature regression for real-time path tracing reconstruction
- paper on path trace denoising - aimed at interactive scenarios with 1 sample per pixel
-
Vertex Data and Vertex Descriptors
- Vertex Descriptors in Metal allow the programmer to describe the memory layout of vertices
-
Portals with Asymmetric Projection
- shows how to implement Asymmetric Projection - adjust the projection on a render
-
Radeon GPU Profiler 1.5.1
- the new version adds support for hardware-level tracing on an instruction level
-
[video] Real Time Continuous Lever of Detail Rendering of Point Clouds
- video for article discussed in [issue 76](https://www.jendrikillner.com/post/graphics
-
Using the bgfx library with C++ on Ubuntu
- the tutorial shows how to use BGFX running on Linux
-
Unity 2019 Shader Development
- example project for a course teaching the basics of shader development using Unity
-
Technically Art: Issue 18 (17.05.2019)
- collection of VFX tweets of the week - tutorials, demos, and showcases of great looking effects
-
Seeing the whole Physically-Based picture
- presents what kind of approximations are still required to be done in Physically Based Rendering
-
Proposal for WebGPU as a new Standard Cross-Platform Graphics API (OpenGL replacement...
- proposal of requirements that would allow WebGPU to be used as a common cross
-
Axis-Aligned Bounding Octahedra and The 7-Sided AABB
- describes an alternative bounding structure that is based around axis aligned triangles
-
[video] Technical Papers Preview: SIGGRAPH 2019
- overview video of papers that will be presented at SIGGRAPH 2019
-
Cross-Platform Shader Handling
- describes the cross-platform shader pipeline - mix of json description files for state / constants...
-
What’s New in Android: Q Beta 3 & More
- Vulkan 1.1 will be a requirement on 64-bit devices starting with Android Q
-
Introducing TensorFlow Graphics: Computer Graphics Meets Deep Learning
- tour of TensorFlow Graphics - allows to define 3D scenes and run training on them
-
Why are 2D vector graphics so much harder than 3D?
- presents the history of 2D printing and font formats
-
How we made Neon Noir - Ray Traced Reflections in CRYENGINE and more!
- interview describing the reflections that have been implemented in the [Neon Noir Demo](https://ww...
-
Hierarchical Russian Roulette for Vertex Connections
- a method based on stochastic light culling - hierarchical Russian Roulette using an approximate sc...
-
Fur Shader Tutorial
- brief Unity example that shows how to render a basic fur look
-
Shader games with Vulkan
- overview about how to design a game to run all logic in Vulkan shaders
-
Part 3: DDGI Overview
- Dynamic Diffuse Global Illumination - overview of the evolution of several indirect illumination t...
-
Reverse engineering the rendering of The Witcher 3, part 14 - cirrus clouds
- reverse-engineering the cloud rendering of The Witcher
-
A tour of Granite’s Vulkan backend – Part 6
- presents how Granite deals with vkPipeline management
-
Pro Tip: Improved GLSL syntax for Vulkan DescriptorSet Indexing
- explains a code generation method to generate helper functions to make indexing into unbounded res...
-
Bounding Half-Space Hierarchy
- explains the BHH (Bounding Half-Space Hierarchy) data
-
rendering-bib
- bibliography file containing 2000+ entries, in computer graphics, rendering, transport theory, and...
-
Integrating GVDB & Future Plans
- part 3 of the volumetric cloud rendering series - the code has been released on [github](https://g...
-
A brief history of 3D texturing in video games
- a twitter thread that provides an overview about how games, especially in regards to texturing, ha...
-
Making of Newton Protocol
- presents the rendering architecture used for the raytracing demo
-
A Guide To Rust Graphics Libraries 2019
- overview of the state of graphics API wrappers and libraries for rust
-
3D Projection
- explains 3D camera projections - shows the influence of the camera FoV and how it changes the perc...
-
Birthday Post! ShaderGraph conversions (WorldPosition Textureswap/Appear/Disappear)
- shows how to convert effects from unity shader code to use the ShaderGraph system
-
A tour of Granite’s Vulkan backend – Part 4
- shows the window system abstraction - can be used to render to a window or into an offscreen rende...
-
A Tale of a Bug
- the article describes the process to locate a bug in Babylon.js PBR pipeline
-
Automatic Exposure Using a Luminance Histogram
- presents the process of tone mapping and how curves are used
-
PIX 1904.23 – New Timing Capture preview and improved DXIL shader debugging
- new PIX version contains a preview of a new timing view
-
A tour of Granite’s Vulkan backend – Part 5
- presents how render passes are expressed in the user
-
i3D 2019 – Sampling Projected Spherical Caps in Real Time
- presents a new technique for a stochastic sampling of spherical area lights that is suitable for G...
-
Lighting And Transmittance
- the second part of the volumetric cloud rendering series
-
Dynamic Bounding Volume Hierarchies - Extended version
- an extended version of the GDC 2019 talk - overview of AABB and BVH
-
Write-up: Magical Marbles
- explains how to create a layering parallax effect to simulate the inside of a marble using ray mar...
-
A tour of Granite’s Vulkan backend – Part 2
- presents how memory, object lifetime and command buffers are managed
-
GDC 2019 Presentation Links
- PDFs for all AMD presentations from GDC 2019 have been posted
-
Machine Learning Acceleration in Vulkan with Cooperative Matrices
- shows the Cooperative Matrix extension for Vulkan
-
Under the hood of Shadow of the Tomb Raider
- using a Forward+ rendering pipeline and raytracing for shadows
-
Model View Projection
- shows the different spaces that are typically involved in 3D rendering
-
Sampling A Procedural Sky
- series on rendering of volumetric clouds - shows how to sample the sky lighting contribution
-
Flax Facts #25 – Vulkan
- Flax engine now fully supports a Vulkan backend - better performance than the D3D12 implementation...
-
New in D3D12 – background shader optimizations
- D3D12 is starting to allow GPU drivers to implement shader optimization in a background thread
-
Intel® Graphics Performance Analyzers Assist Snow Simulation in Frostpunk*
- presents how the snow simulation has been implemented and how it was optimized for Intel GPUs
-
A tour of Granite’s Vulkan backend – Part 3
- presents the shader binding model used by granite
-
Debugging VK_ERROR_DEVICE_LOST with Nvidia Device Diagnostics
- vulkan extension that allows progress markers to be inserted into the Vulkan command stream
-
GPU Architectures
- a brief overview of the rasterization process - look at the logical rendering pipeline model
-
RTG free on Kindle; consider Google Play for books
- Ray Tracing Gems is now also available as a free Kindle version
-
Observations about the rendering of Metro: Exodus
- presents an overview of the general flow of a frame of the game
-
More observations in Metro: Exodus
- looks at the composition of transparent objects, lens flares and at terrain tessellation
-
DirectX-Specs
- Microsoft released the engineering specification for Direct3D 11 and 12 including DXR
-
GDC19 show guide from NVIDIA
- all GDC content from Nvidia is now available for download (free login required)
-
AMD GCN ISA: a first dive
- shows which tools are available to look at the shader disassembly for AMD GPUs
-
high-quality object-space dynamic ambient occlusion for characters
- preprint of I3D paper that will be presented in May
-
[pdf] - nvidia vulkan update - GTC 2019
- overview of the latest extensions added to Vulkan on Nvidia GPUs
-
A tour of Granite’s Vulkan backend – Part 1
- discusses the authors' thoughts about abstraction levels in graphics APIs
-
THE STORY OF THE 3DFX VOODOO1
- provides a look at the 3DFX VOODOO1 GPU from the mid
-
2d Raymarched Smoke
- walkthrough of a simple cloud shading setup using the Unity shader graph system
-
Bringing GPU acceleration to Windows containers
- with Windows Server 2019 or Windows 10, version 1809 GPU acceleration for Direct3D based workloads...
-
Alternative Take on the Split Sum Approximation for Cubemap Pre-filtering
- describes how cubemap pre-filtering for image-based lighting is done in Unity’s HD Render Pipeline...
-
New in D3D12 – GPU-Based Validation (GBV) is now available for Shader Model 6.x
- windows update 19H1 supports GPI based validation with shader model 6, generated by the [DXC](http...
-
Creation Graphs
- presents the Creation Graph - a graph-based system that allows the definition of functionality, wh...
-
Technically Art: Issue 12 (05.04.2019)
- collection of tweets related to a variety of tech art articles
-
Anti-Ghosting with Temporal Anti-Aliasing
- presents techniques used to alleviate ghosting in the TAA solution of "The Grand Tour Game"
-
Keeping the Blue Side Up: Coordinate Conventions for OpenGL, Metal and Vulkan
- presents the coordinate conventions for Metal, OpenGL and Vulkan
-
Reverse engineering the rendering of The Witcher 3, part 13a - witcher senses (object...
- series part 1 of the reverse engineering of The Witcher senses
-
Reverse engineering the rendering of The Witcher 3, part 13b - witcher senses (outlin...
- reverse engineering of The Witcher sense effect - show how the outline for objects is generated
-
Reverse engineering the rendering of The Witcher 3, part 13c - witcher senses (fishey...
- explains how the inputs from part 1 and 2 of the series are combined using a fullscreen effect
-
GPU Path Tracing in Unity – Part 3
- part 3 of tutorial series in building a path tracer in Unity
-
NVIDIA Announces Nsight Graphics 2019.2!
- new Nsight graphics release adds improved DXR support, D3D12 fence visualization and Vulkan suppor...
-
Autodesk - A Surface Standard
- whitepaper presenting the Autodesk uber surface shader based on the Arnold shading model
-
Advanced Map Shading
- presents how to render maps using WebGL - shows how to convert color maps to elevation
-
game developers conference 2019 links
- collection of links to presentations from GDC 2019
-
Resources for Learning Graphics Programming
- collection of resources aimed at helping beginners get started with graphics programming
-
Variable Rate Shading: a scalpel in a world of sledgehammers
- overview of Variable Rate Shading which is starting to become part of the D3D12 API
-
New in D3D12 – DirectX Raytracing (DXR) now supports library subobjects
- next Windows update will add support for library subobjects
-
[video] Khronos - 2019 GDC
- youtube playlist with all Khronos talks from GDC 2019
-
A hybrid rendering pipeline for realtime rendering: (When) is raytracing worth it?
- the author presents his thoughts on the current state of raytracing in games
-
stable filtering — part 2
- explores a stable filter further - presents a new test that can be used to validate the filter qua...
-
Arm Releases Vulkan Best Practices for Mobile Developers
- ARM released a best practice guide for Vulkan - consists of runnable samples that show best
-
Reverse engineering the rendering of The Witcher 3, part 12 - stupid sky tricks
- look at the disassembly for parts of the skydome, sun, and stars shader from The Witcher
-
Using AMD FreeSync 2 HDR: Color Spaces
- covers overview of color theory, color spaces, and encoding
-
Tips and Tricks: Ray Tracing Best Practices
- list of best practices for ray tracing - how to manage the acceleration structure construction and...
-
PIX 1903.26 – Occupancy for Turing GPUs and Variable Rate Shading
- occupancy graph is now supported on Turing GPUs too
-
Flipping the Vulkan viewport
- a small article explaining the difference in the viewport coordinate system when using Vulkan comp...
-
A Multi-Faceted Exploration (Part 4)
- presents how to precalculate an energy preserving microfacet BRDF with a diffuse
-
An unbiased look at real-time raytracing
- presents the authors' views on "do"'s "do not"'s for the future use of raytracing in games
-
Unreal Engine GDC 2019 tech talks now available online
- unreal tech talks from GDC 2019 are available
-
World of Warcraft uses DirectX 12 running on Windows 7
- the latest update adds support to run the D3D12 game on windows 7
-
Adventures in Sampling Points on Triangles (Part 1.5): Reader Mail and Followups
- follow up to the post discussed in [issue 75](/post/graphics
-
PIX 1903.12 – High Frequency Counters
- pix for windows now supports High-Frequency Counters
-
Wolfenstein: Ray Tracing On using WebGL1
- a ray tracing system for Wolfenstein 3D using only WebGL 1
-
Learning DirectX 12 – Lesson 4 – Textures
- explains the concepts of textures, mip-mapping, sampling
-
A Low-Distortion Map Between Triangle and Square
- a new low distortion mapping between squares and triangles that is also cheap to compute
-
i3D 2019 - Program
- program for the I3D conference in Montreal has been published
-
Making your BVH faster
- presents 3 optimizations that can be applied to BVH to increase performance
-
Real-Time Continuous Level of Detail Rendering of Point Clouds
- a new technique for continuous level of detail generation of point clouds, designed for VF applica...
-
Reverse engineering the rendering of The Witcher 3, part 11 - lightnings
- explains how the lightning effect in The Witcher 3 has been implemented
-
stable filtering — part 1
- explanation of half-pel filters - shows properties of different filters common in video compressio...
-
Visual Effect Graph Samples
- overview of particle system samples that have been created with the Visual Effect Graph in Unity
-
Ray Tracing Gems
- an unofficial updated version of Ray Tracing Gems with fixes for the errors found in the original ...
-
Getting a Vulkan application up and running on a low-spec device with buggy drivers
- presents how to find a GPU crash on a low-end Vulkan device
-
GDC 2019 Presentations
- overview of all sessions AMD is involved with during GDC 2019
-
Ray Tracing Gems - hybrid rendering for real-time ray tracing
- the chapter describes the hybrid rendering pipeline used in the PICA PICA demo
-
Adventures in Sampling Points on Triangles (Part 1)
- presents a method to distribute sampling points within a triangle taking advantage of sub
-
SampleZoo - Simple implementations of sampling patterns, with objective tests to comp...
- collection of different sampling patterns - explains the patterns and the characteristic of ...
-
Efficient Generation of Points that Satisfy Two-Dimensional Elementary Intervals
- presents a new algorithm that allows to efficiently and incrementally generate stratified sample p...
-
Shader Convertion Part 2 (Liquid, Triplanar, Waterfall)
- shows how to implement a fluid like movement inside an object, tri
-
Programming HDR monitor support in Direct3D
- documents the experiments with HDR support using all 3 different hardware vendors
-
Programming FreeSync 2 support in Direct3D
- presents how FreeSync2 supports HDR and variable refresh rate
-
How Magnum does GFX API enum mapping
- shows the method used to abstract pixel formats between OpenGL and Vulkan using an external ...
-
SRP Batcher: Speed up your rendering!
- explains the design of the new Unity batching system
-
Color Spaces
- in-depth discussion of color spaces - shows how the color response curve influences which color ab...
-
Vulkan GPU - Assisted Validation
- whitepaper explains how to enable GPU assisted validation
-
Thoughts on light culling: stream compaction vs flat bit arrays
- walkthrough of two algorithms for forward culling techniques
-
texture level of detail strategies for real-time ray tracing
- presents multiple approaches to calculate MIP mapping textures when using raytracing
-
Enemy health bars in 1 draw call in Unity
- explains how to use GPU instancing - to render health bars for individual objects
-
Scalable Ambient Obscurance for the Mathematically Uninclined
- implementation walkthrough of the OpenGL Scalable Ambient Obscurance (SAO) algorithm
-
My take on shaders: Parallax effect (Part I)
- shows how to implement a parallax effect in the pixel shader
-
Turing - Tensor Core Extension - VK_NV_cooperative_matrix
- Vulkan extension that exposes NVIDIA Tensor Cores on Turing GPUs
-
Introduction to Convolution Integrals
- great visual explanation of Convolution Integrals
-
Interactive light map and irradiance volume preview in Frostbite
- chapter from the [Ray Tracing Gems](http://www.realtimerendering.com/raytracinggems/) book
-
Rendering process in Shadow Fight 3
- shows the frame breakdown of Shadow Fight 3 - rendering approach designed to reduce the number of ...
-
Friday Facts #281 - For a Few Frames More
- presents performance optimizations done for the 2D rendering system
-
Camera Rays
- shows how to set up full-screen quad geometry data so that attribute interpolation can be used to ...
-
Pixel Spirit cards
- card deck that introduces visual shapes and GLSL code required to create them
-
Emulating Command Buffers in OpenGL - Part 2
- presents a brief look at the performance of emulating a custom command buffer format on top of Ope...
-
Creating an Interactive Vertex Effect using Shader Graph
- explains how to create a pulsating vertex effect using Unity Shader Graph and the lightweight rend...
-
Shader Debugging for BGFX Rendering Engine
- shows how debug compute shaders when using BGFX - a brief introduction into what is necessary to c...
-
RadeonSI Picks Up Primitive Culling With Async Compute For Performance Wins
- open-source AMD Linux driver adds support to use async compute to cull primitives before the verte...
-
Unreal Engine 4.22 Preview
- added support for ray and path tracing for the D3D12 backend
-
Procedural Stochastic Texturing in Unity
- Unity provides a plugin that implements the tiling stochastic texturing approach presented in issu...
-
Experience everything Unreal and more at GDC 2019
- list of Unreal events/talks/presentations that will take place at GDC
-
WebGL 2.0—Why It’s the Path to Stable Open Standards-based 3D Web Graphics
- presents a brief history of the development of WebGL and it's adoption
-
Adding point and directional lights to a physically based renderer
- presents the equations necessary to express point
-
Lazy person's tone mapping
- presents a simplistic approach to tone mapping results from a renderer
-
Basic Color Science for Graphics Engineers
- presents how the RGB color representation is based on human vision
-
Unity GPU culling experiments Part2 – optimizations
- presents how to optimize the compaction pass in a GPU culling pipeline
-
Fast, Constant Time Sphere Indexing, Part 2
- shows how to simplify the math for constant time sphere indexing (the technique was described in i...
-
NVIDIA Announces Nsight Graphics 2019.1
- enables debugging of GPU hangs with D3D12 using Nvidia aftermath
-
the rendering techniques of deus ex and tomb raider
- presentations from Siggraph 2015 have been published
-
Direct3D 11 on 12 Updates
- overview of improvements to the system that allows D3D11 applications to be run using D3D12
-
Thoughts on graphics APIs and libraries
- discusses author's view on the state of low-level graphics APIs (Vulkan, D3D12, Metal)
-
“Ray Tracing Gems” preprints available part by part this month
- every few days a new preprint article from the "Ray Tracing Gems" book will be released
-
Learning D3D12 from D3D11 - Part 2: GPU Resources, Heaps, and Descriptors
- part 2 of getting started with D3D12 for programmers with D3D11 experience, part 1 discussed in we...
-
My take on shaders: UI SDF Icon shader
- shows how to sample a signed distance field in a Unity UI shader
-
Approximating water effects using terrain height maps part 1: Reflections
- discusses screen space reflection and planar reflections techniques
-
Decoding a projection matrix
- show how a projection matrix is formed - explains GPU clipping and how it relates to the projectio...
-
[twitter] texture minification using mip-mapping
- twitter thread discussing mip-map selection algorithms
-
An Intro to Physically Based Rendering for Artists and Programmers - Part 1
- introduction into physically based shading
-
Evenly Distributing Points in a Triangle
- presents a technique to distribute an infinite sequence of points on the surface of an arbitrary t...
-
De-gamma your texture kid!
- the article points out that albedo textures are commonly stored in sRGB color space and need...
-
'Infinite' sky shader for Unity
- a short post that shows how to make an object appear infinitely large without clipping artif...
-
Directional Shadows Cascaded Maps
- extends the custom scriptable rendering pipeline, the previous part was covered in [issue 66...
-
Technically Art: Issue 3 (01.02.2019)
- weekly series with twitter posts about tech art techniques and ideas
-
Getting Started Learning Tech Art & Unity Shader Writing
- summary of resource about getting started with tech art
-
PIX 1901.28 – Timing Data Improvements and support for new GPUs
- new PIX for windows version - performance counters are now supported on AMD Radeon 7 GPUs and NVID...
-
New in D3D12 – DRED helps developers diagnose GPU faults
- D3D12 adds support for DRED (device removed extended data) in the latest windows insider preview b...
-
A Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting
- extension to real-time image based lighting models
-
Enterprise PBR Shading Model
- explains the PBR shading model - a combination of 3 BSDFs that allow expressing a large number of ...
-
Raymarching Workshop Course
- shader workshop that uses Shadertoy to teach raymarching techniques
-
Vulkan - GPU-Assisted Validation
- latest Vulkan SDK version (1.1.97.0) adds GPU assisted validation
-
Re-reading An Introduction to Ray Tracing
- the article discusses his favorite chapters and insights when looking back at the original "An Int...
-
Classical corner cases
- list of common problems encountered when using Shadertoy and how to solve them
-
Khronos GDC 2019 - Activity Overview
- list of sessions by Khronos and related talks that will be taking place during GDC this year
-
Technically Art: Issue 2 (25.01.2019)
- issue 2 of weekly tech art series, contains a collection of twitter post showing interesting art a...
-
My take on shaders: Color grading with Look-up Textures (LUT)
- describes lookup table based (LUT) color grading in LDR color space
-
Moving from OpenGL to Metal
- explains how to port an existing iOS OpenGL application to use Metal
-
Volume Rendering with WebGL
- implementation of ray marching - renders the back faces of the bounding volume to determine on whi...
-
Implementation of Fast and Adaptive Procedural Cellular Noise
- cellular noise created from a quadtree grid structure
-
Reverse engineering the rendering of The Witcher 3, part 10 - distant rain shafts
- explains how the distant rain shafts in The Witcher 3 are implemented
-
“An Introduction to Ray Tracing” is now free for download
- the first book on raytracing "An Introduction to Ray Tracing" from 1989 is now freely available as...
-
Technically Art: Issue 1 (18.01.2019)
- start of weekly curation of tweets about 3D (technical) art, shaders, and VFX
-
Learning D3D12 from D3D11 - Part 1: Getting Started, Command Queues, and Fencing
- start of series for programmers with D3D11 experience starting to learn D3D12
-
WebGL + Rust: Basic Water Tutorial
- explains how to render water using WebGL, Rust, and WebAssembly
-
Ice Shader – Hard Edges in Vertex Shader
- shows how to use screen space derivatives to create hard edges on a mesh in the pixel shader
-
Programming tricks in Shadertoy / GLSL
- list of common patterns for shadertoy programming
-
Procedural Stochastic Textures by Tiling and Blending
- preprint of the article to appear in GPU Zen 2 talking about the implementation details (C++ and G...
-
How to Start Learning Computer Graphics Programming
- walkthrough of steps to learn graphics programming
-
16x AA font rendering using coverage masks, part III
- explains how to rasterize the glyphs from a font into a texture. Providing the coverage informatio...
-
Rasterization in One Weekend, Part III
- presents what vertex attributes are and how they are interpolated to deal with perspective distor...
-
A Primer On Efficient Rendering Algorithms & Clustered Shading
Part 1 of the article: - explains how classical forward/deferred pipelines work and how tiled and c...
-
The Rendering of Rise of the Tomb Raider
- frame breakdown of the Rise of the Tomb Raider with D3D12 on PC
-
Color Spread Post-Processing Effect Tutorial in Unity
- explains how to apply an expanding color effect that converts the world from greyscale back to col...
-
Containerized Shader Compilers
- shows how to set up a Docker container image that is able to run shader compilers
-
Unified Resource State Management for Vulkan and Direct3D12
- explains the state management system implemented for the Diligent Engine
-
Art and Technology at Pixar (SIGGRAPH Asia 2018 Course)
- course notes for the Siggraph Asia 2019 course - presenting the newest developments and techniques...
-
Game Tech Deep Dive: The fast and furious window shaders of Forza Horizon 4
- explains the parallax mapping technique used to represent the interiors of buildings as seen throu...
-
Vulkan sparse binding - a quick overview
- explains sparse binding and residency - sparse binding lifts the requirement that resource memory ...
-
Reverse engineering the rendering of The Witcher 3, part 7a - average luminance (dist...
- describes how the histogram of pixel brightness is collected using a compute shader in The Witcher...
-
Adaptive Exposure from Luminance Histograms
- explains how to use D3D12 to calculate a histogram of pixel brightness in a compute shader
-
Rasterization in One Weekend, Part II
- part two of rasterization implementation article series with C++
-
Intel's Architecture Day 2018: The Future of Core, Intel GPUs, 10nm, and Hybrid x86
- presenting an overview of next-generation Intel architecture
-
NVIDIA Announces Nsight Graphics 2018.7
- acceleration structure visualization for DXR (DirectX Raytracing) and Vulkan
-
Radeon Software Adrenalin 2019 Edition 18.12.2 Highlights
- new AMD driver adds support for VK_EXT_inline_uniform_block, VK_KHR_swapchain_mutable_format, VK_E...
-
Breaking down barriers – part 6: experimenting with overlap and preemption
- the final part of the series - presents how different GPUs are able to overlap the workload betwee...
-
Scriptable Render Pipeline - Single-Pass Forward Rendering
- next part of the series about the development of a forward shading pipeline using the Unity script...
-
Metal Documentation Index
- user created index-page for the Apple Metal documentation
-
Going slightly physically based
- shows how to validate using image comparison and using a furnace test
-
Khronos - 2018 SIGGRAPH Asia
- Khronos talks from Siggraph 2018 Asia - talks about Vulkan
-
Code reviews - Lamorna Engine
- series of videos walking through the implementation of a software renderer written in multithreade...
-
The importance of good noise
- explains why noise is significant in computer graphics and how to animate blue noise over time so ...
-
Directional Lightmap Encoding Insights
- new encoding model for Ambient Highlight Direction (AHD) lightmaps that eliminate common interpola...
-
Vulkan Raytracing - bunny and teapot
- part 2 of Vulkan raytracing series - extends the application with multiple 3D meshes, texturing, s...
-
A radiative transfer framework for non-exponential media
- development of a new rendering framework for transmittance for participating media that enables no...
-
Breakdown: Animated Raindrop Material in UE4
- walkthrough of the implementation of a rain material using the Unreal Engine 4 shader graph
-
How to Sanity Check your Spherical Harmonics Projection Code
- a short summary of what spherical harmonics are and what they are used for
-
Procedural Color - Introduction
- article series about procedural routines for color generation
-
Encoding Indirect Command Buffers on the GPU
- a sample that explains how to use Metal to generate render commands on the GPU
-
Sampling the GGX Distribution of Visible Normals
- explains a new model for sampling visible normals of the GGX distribution
-
Twitter Thread - Where do the BRDF formulas come from? How can we make our own?
- twitter thread that discusses what a BRDF is and how they are formed
-
Halcyon Architecture - Director's Cut
- a single slide-deck that will evolve and serve as a single reference point for information about t...
-
glsl-reduce
- the walkthrough explains how to use GLSL-reduce to simplify a GLSL shader and preserve certain con...
-
2D SDF Shadows
- a tutorial explains how to implement ray traced shadows when using a signed distance field to repr...
-
Reweighting Firefly Samples for Improved Finite-Sample Monte Carlo Estimates
- interactive WebGL demo for the paper describing a technique to reduce firefly artifacts from path ...
-
Vulkan & OpenGL CAD Mesh Shader Sample
- Nvidia sample for mesh shaders using Vulkan and OpenGL
-
How does a GPU shader core work?
- explains the GPU programming model, how shaders are executed
-
All about coding things
- twitter collection of many graphics and game programming related links
-
Foggy Window Shader in Unity
- explains how to implement a shader that simulates a foggy window effect applied to a plane in 3D s...
-
Using A Custom Toolchain In Visual Studio With MSBuild
- explains how to integrate the DirectX shader compiler (DXC) into the Visual Studio build system (m...
-
Model for Real Time—Beyond Counting Polygons
- beginner level overview about consideration for modeling techniques related to performance and min...
-
Fast, Constant Time Sphere Indexing, Part 1
- article with interactive and live tweakable examples
-
Parallel Shader Compilation for Ray Tracing Pipeline States
- explains how to use new D3D12 API additions to precompile shaders for DirectX raytracing in parall...
-
Ni No Kuni 2: frame analysis
- frame breakdown of an interior scene in Ni No Kuni 2
-
Rasterization in One Weekend, Part I
- part 1 of the series on writing a software rasterizer in C++
-
Vulkan Synchronization Primer - Part I
- overview of the synchronization primitives of the Vulkan API
-
Vulkan Synchronization Primer - Part II
- the distinction between memory and execution barrier
-
Modern graphics abstraction and real-time ray tracing
- overview of architecture - multiple render backends are supported at the same time
-
Web High Level Shading Language
- a new shading language, designed for use with WebGPU
-
16x AA font rendering using coverage masks, part II
- part 2 of the series on font rendering - shows the artifacts a regular grid sampling pattern cause...
-
Microsoft's New Open-Source Project Is Shader Conductor For Cross-Compiling HLSL
- new open source library from Microsoft that combines the [DirectXShaderCompiler](https://github.co...
-
A simple method to construct isotropic quasirandom blue noise point sequences
- presents an approach to generate a quasirandom blue noise point sequence
-
Our Machinery Episode 3: Cross-Platform Graphics
- podcast episode discusses how to design a cross-platform API, problems, and considerations
-
Reverse engineering the rendering of The Witcher 3, part 6 - sharpen
- reverse engineering the sharpening filter from The Witcher 3 and explains how it works step by ste...
-
There is a way to query GPU memory usage in Vulkan - use DXGI
- shows that using DXGI functionality can be used to keep track of Vulkan memory usage on Windows
-
Vulkan with DXGI - experiment results
- experiments with using DXGI for memory reporting when using Vulkan
-
Experimenting with VK_GOOGLE_display_timing, taking control over the swap chain
- the extension allows the application to collect timing information from the presentation engine an...
-
How To: Data Lookups Via Raytracing
- explains how ray-tracing could be used for arbitrary data
-
niagara: Depth pyramid for occlusion
- shows how to generate a depth pyramid for Vulkan
-
Graphics Programming - Resources for Beginners
- list of resources for beginners that are looking to get started with graphics programming
-
Task list for VK_EXT_scalar_block_layout
- new Vulkan extension that allows usage of the C++ memory layout in Vulkan constant and structured ...
-
Recovering the Scale, Rotation and Translation Matrices from the Model Matrix
- presents how to recover the scale, rotation, and position from a model matrix
-
Optimize your engine using compute @ 4C Prague 2018
- overview of the compute shader execution and pipeline model
-
Intro to gpu scalarization – part 1
- overview of the GPU execution model, the difference between scalar and vector registers and instru...
-
Intro to gpu scalarization – part 2
- walkthrough of two different strategies to scalarize the forward+ shading loop
-
VK_NVX_raytracing - Triangle
- A walkthrough that explains all the concepts and shaders necessary to ray trace a single colored t...
-
Accelerated Ray Tracing in One Weekend in CUDA
- explains how to convert the code from the [Ray Tracing in One Weekend](http://in1weekend.blogspot....
-
2D Signed Distance Field Basics
- unity tutorial that explains how to create a signed distance field for a 2D circle and rectangle
-
Picking and Hit-Testing in Metal
- explains how to implement 3D picking in a Metal application
-
Few words about HLSLexplorer
- a tool, now open source, that allows the compilation of HLSL and shows the disassembly in DXBC and...
-
An Adaptive Parameterization for Efficient Material Acquisition and Rendering
- paper on BRDF measurement which proposes a new parameterization that adapts to the behavior of the...
-
halcyon + vulkan
- presents an architecture overview of the engine - render backends are implemented as DLLs that can...
-
2d graphics in Rust discussion - A look at GPU memory management
- discusses considerations when designing memory components for use with gfx
-
16xAA font rendering using coverage masks, part I
- presents a technique for font rendering that operates on coverage instead of visibility
-
PIX 1810.24 – Support for final DirectX Raytracing API
- new PIX version that supports the final DirectX Raytracing API version
-
NVIDIA Announces Nsight Graphics 2018.6
- full Linux support for Vulkan and OpenGL 4.5 - support for final DirectX Raytracing API and new su...
-
Existing BC7 codecs don't handle textures with decorrelated alpha channels well
- shows that BC7 encoders produce compression artifacts when the alpha channel is unrelated to the R...
-
profiling: the case of the missing milliseconds
- case study of a performance regression in League of legends
-
Effectively Integrating RTX Ray Tracing into a Real-Time Rendering Engine
- provides best practices for applications that use the RTX API
-
large scale ambient occlusion: eliminating light leaks
- presents how to reduce light leaks in a large scale global illumination system
-
SPIR-V Compression: SMOL vs MARK
- comparison of two libraries to compress SPIR-V shaders SMOL
-
Custom Shaders HLSL and Core Library
- a tutorial that explains how to create a custom shader for use with the scriptable render pipeline...
-
Introducing Zink, an OpenGL implementation on top of Vulkan
- mesa gallium driver that implements partial support for OpenGL 2.1, and OpenGL ES 1.1 and 2.0 on t...
-
Graveyard Keeper: How the graphics effects are made
- shows how the lighting system in the 2D game was implemented
-
Mipmapping with Bidirectional Techniques
- brief overview about what mips are and how to calculate mip selection in a rasterizer
-
Entity-Component-Systems and Rendering
- explains the plugin architecture that enables efficient implementation of high
-
DXC Cookbook: HLSL Coding Patterns for SPIR-V
- SPIR-V shaders can only access global resources - HLSL is very flexible with resource usage
-
River Editor: Water Simulation in Real-Time
- walkthrough of the development of real-time GPU based water simulation
-
Video Series: Practical Real-Time Ray Tracing With RTX
- post that provides links to talks with summaries about ray tracing on Nvidia RTX hardware
-
Turing Texture Space Shading
- overview of texture space shading - technique decouples shading from rasterization rate
-
MinLod: A Cheap&Simple Method to Increase Texture Details at Acute Angles
- look at how to adjust mip selection to favor noise over more detail at acute angels
-
SIGGRAPH 2018 Course: Machine Learning and Rendering
- all content from the SIGGRAPH 2018 course has been published
-
Physically Based Rendering, online
- the complete 3rd edition of Physically Based Rendering is now online for free
-
From screen space to voxel space
- summarizes voxel ray tracing implementation, memory and performance optimizations
-
Adding multiple bounces
- next part in the Metal ray tracer series that adds support for multiple bounces to simulate global...
-
Improving material system
- extending the material system of the Metal raytracer so that multiple materials can be expressed a...
-
Flavors of Sampling in Ray Tracing
- overview of the strengths and weaknesses of different sampling techniques in ray tracing
-
How to make a fake interior effect with unity using reflection probes
- shows how to implement interior mapping using the Unity reflection probe system
-
Rust Mesh Optimizer
- rust version of the [meshoptimizer](https://github.com/zeux/meshoptimizer) library is now availabl...
-
How I Grow with Grass Shader
- walkthrough of a Godot shader that uses particles to spawn vegetation meshes based on height map a...
-
Alpha blending using pre-multiplied alpha
- a brief summary of the usage of premultiplied alpha using Vulkan
-
Distance Fields
- explains an O(n) algorithm that calculates 2D distance fields by operating on rows and treating sa...
-
2018 XDC - Khronos
- slides from XDC ([X.Org](http://x.org/) Developer's Conference)
-
Introduction to Real-Time Ray Tracing with Vulkan
- explains the Vulkan ray-tracing extension - contains an overview of the ray tracing pipeline, the ...
-
Deep Compositing and Reprojection
- explains the mathematical foundation behind deep composition that allows compositing of volumetric...
-
Rendering the Moana Island Scene Part 2: A production scene from a hobby renderer
- walkthrough of the steps required to render the Moana scene in the authors custom path tracer
-
Project: SDL render batching
- discusses a change to the SDL render back-end that will batch CPU rendering commands to reduce the...
-
Gfx-hal Tutorial part 2: Vertex buffers
- next part of the series on gfx-hal usage (low-level graphics API for Rust)
-
distance functions
- updated SDF function for a capped cone, round cone, and an ellipsoid
-
niagara: Rendering a mesh
- Vulkan stream - part 4 - overview and integration of Vulkan extension loader
-
“Cheap” Diamond Rendering
- explanation of shader for diamond rendering in a forward rendering architecture
-
Another View on the Classic Ray-AABB Intersection Algorithm for BVH Traversal
- presents the steps required to vectorize the Ray-AABB approach by [Andrew Kensler](http://psgraphi...
-
Running Average Encoding - Why It Works
- derivation of the progressive spherical Gaussian encoding technique discussed in last week's issue...
-
Porting My CUDA Path Tracer to ptx-builder/linker
- explores changes to CUDA path tracer with Rust, what improved since the last post and what problem...
-
A Comparison of Modern Graphics APIs
- work in progress post comparing API concepts between D3D12, Vulkan, Metal, and OpenGL
-
DirectX Raytracing and the Windows 10 October 2018 Update
- Windows raytracing support is available starting with Windows 10 October 2018 update
-
Video Series: Real-Time Ray Tracing for Interactive Global Illumination Workflows in ...
- breakdown of "Real-Time Ray Tracing for Interactive Global Illumination Workflows in Frostbite" in...
-
Parsing Shader Includes
- explains how to parse a shader file for includes using regex (implemented using Rust)
-
Perspective Matrices and Depth
- visualization of floating point precision when a classical OpenGL projection matrix is used
-
Art That Moves: Creating Animated Materials with Shader Graph
- explanation of Unity shader graph nodes - walkthrough of example shaders that allow the creation o...
-
PIX-1810.02 – Direct3D11 and WinML
- new PIX features are available with Windows 10 October 2018
-
Qualcomm Releases Snapdragon Profiler with Vulkan Support
- new profiler version now supports Vulkan
-
Turing Variable Rate Shading in VRWorks
- explains what variable rate shading is and what use cases it enables
-
Turing Multi-View Rendering in VRWorks
- explains the recent developments in VR headsets and how Turing offers new hardware solutions...
-
Spherical Gaussian Encoding
- a new encoding method for Spherical Gaussians that improves quality from previous encoding m...
-
Interior Mapping: rendering real rooms without geometry
- presents a high-level overview of how to implement interior mapping
-
Efficient Instancing in a Streaming Scenario
- discusses a technique to generate instanced geometry procedurally on the GPU using OpenGL co...
-
Adaptive GPU Tessellation with Compute Shaders
- pre-print of an article that will appear in GPU Zen 2
-
Claybook, raw->typed buffer performance analysis numbers
- Twitter thread discussing Raw vs. Typed buffer performance on Claybook
-
CUDA 10 Features Revealed: Turing, CUDA Graphs and More
- overview of new features included in CUDA 10 - Multi
-
Metal Raytracer - Implementing diffuse BRDF
- extends the Metal raytracer with obj model loading
-
Mesh Shader Possibilities
- walkthrough of the geometry pipeline on current GPU architectures and how mesh shaders fit into it...
-
The Peak-Performance-Percentage Analysis Method for Optimizing Any GPU Workload
- updated post now includes SM warp-issue-stall metrics
-
readings on the state of the art in rendering
- summary of resources for graphics programmers to study and keep up
-
Custom Pipeline Taking Control of Rendering
- a tutorial that shows how to implement a custom rendering pipeline in Unity
-
SIGGRAPH 2018 Tech Talk Videos Now Available!
- Unreal released the tech talks from SIGGRAPH 2018
-
Introduction to Turing Mesh Shaders
- new shader stages on Turing that allows the generation of primitives for direct consumption by the...
-
Challenges of Rendering an Open World in Far Cry 5
- talks about the challenges of developing for open world games
-
A Ray-Box Intersection Algorithm and Efficient Dynamic Voxel Rendering
- a new algorithm to compute the intersection point and surface normal of an oriented 3D box without...
-
Breaking down barriers – part 5: back to the real world
- explains the evolution of the windows graphics driver model from win7 to win10
-
hybrid raytraced shadows part 2: performance improvements
- explains optimizations done to the hybrid shadow raytracer
-
NVIDIA Turing Architecture In-Depth
- overview of the new Turing hardware architecture
-
NVIDIA Turing Vulkan/OpenGL extensions
- an extensive list of OpenGL and Vulkan extensions that expose the new Turing hardware features
-
Vulkan conditional rendering
- Vulkan extension that makes it possible to skip parts of command buffers based on the content of a...
-
Shader Showcase Saturday #9: Interior Mapping
- overview of the interior mapping technique - showcase of different implementations and links to fu...
-
roughness mip maps based on normal maps?
- discussing of a technique that tries to preserve normal map variation by generation MIPs that pres...
-
Running Microsoft FXC in Docker
- comparison of DXC (DirectX Shader Compiler) and FXC shader compiler in regards to performance and ...
-
Running Microsoft DXC in Docker
- provides a configuration that allows the DXC compiler to run within docker
-
Signing DXIL Post-Compile
- explains the process that enables DXIL shaders to be signed after they have been compiled
-
Metal ray-tracer
- start of a series of posts that will describe the development of a ray tracer using Metal Performa...
-
Vulkan has just become the world’s first graphics API with a formal memory model. So...
- Khronos released provisional material on the memory model for Vulkan
-
Debugging D3D12 driver crash
- presents a small cross-vendor library for D3D12 that allows collection of information to narrow do...
-
The state of Window System Integration (WSI) in Vulkan for retro emulators
- looks at the state of integration of the Vulkan swap chain with different OS and GPU vendors
-
Smooth Geometry in Real-Time Rendering
- discusses challenges and possible solutions to undersampling artifacts on curved geometry
-
SIGGRAPH 2018 Course: Machine Learning and Rendering
- links to the presentations from the machine learning and rendering course from Siggraph
-
DLSS: What Does It Mean for Game Developers?
- an interview that explains what Nvidias DLSS is (Deep Learning Super Sampling)
-
Layered Noise
- extends the Perlin noise implementation from the previous tutorial to support mixing of multiple l...
-
Using Command Buffers in Unity: Selective Bloom
- explains how Unity command buffers enable the extension of the Unity graphics pipeline
-
Pseudo-bandlimited pixel art filtering in 3D – a mathematical derivation
- presents a filtering approach for a pixel art style in a 3D environment
-
Spotlight Team Best Practices: Setting up the Lighting Pipeline
- in-depth documentation for Unity - explains the most common terms, the difference between the rend...
-
Real-Time Ray Tracing of Correct* Soft Shadows
- shows how to reformulate the rendering equation so that stochastic shadows can be combined with no...
-
API without Secrets: The Practical Approach to Vulkan* Preface
- start of a new Intel series about Vulkan - the focus is on the high
-
API without Secrets: The Practical Approach to Vulkan* - Part 1
- investigates the performance effect of different acquire → render → present approaches
-
Device Memory Management
- explains the strategy how GPU memory is currently managed and what allocation strategy is used
-
Animated Candle Flame write-up
- tutorial on how to implement a candle flame using 3 separate texture channels and noise distortion...
-
Reverse engineering the rendering of The Witcher 3, part 5 - drunk effect
- discusses how the drunk effect in "The Witcher 3" was implemented based on reverse engineering the...
-
hacking a generic ray-triangle intersector
- reusing a generic ray-triangle intersection for other calculations such as calculating the distanc...
-
Looking Through Water Underwater
- Unity tutorial that extends water with flow map (previous part of the series) to support transpare...
-
Large scale ambient occlusion: introduction
- overview how the large-scale ambient occlusion data is baked for Homefront: The Revolution
-
Baking artifact-free lightmaps on the GPU
- article discussing what is required to achieve high
-
Why Clip Transformed Vertices in Clip-Space?
- explains why clipping happens in 4D clip space before the perspective divide is applied
-
Siggraph 2018: A developer’s viewpoint
- blender developers view of the technologies shown at Siggraph
-
Contact-hardening Soft Shadows Made Fast
- explains what contact-hardening shadows are - presents one technique that can be used to implement...
-
High-Performance Graphics 2018
- the slides for all talks from the High-Performance Graphics 2018 conference have been uploaded
-
Radeon GPU Profiler 1.3
- can now show register and LDS (Local data share) usage as well as theoretical occupancy
-
GBuffer helper – Packing integer and float together
- explains how to pack an integer and a floating point number into a single unsigned render target c...
-
Material Advances in Call of Duty: WWII
- normal and gloss mipmapping - using a shortened normals technique
-
Tech Note: Shader Snippets for Efficient 2D Dithering
- present HLSL code snippets that implement different kinds of dithering and an example application
-
A Life of a Bokeh
- an in-depth walkthrough of the new Depth of Field implementation in Unreal Engine 4
-
The Road toward Unified Rendering with Unity’s High Definition Render Pipeline
- discusses architecture, light culling, clustered lighting implemetation
-
Efficient Screen-Space Subsurface Scattering Using Burley’s Normalized Diffusion in R...
- presentation of a screen space subsurface scattering model, they call it the Disney SSS
-
Real-Time rendering’s next frontier: Adopting lessons from offline ray tracing to rea...
- start tracing rays where rasterizer has shortcomings
-
Evenly distributing points on a sphere
- presents two techniques that improve on existing Fibonacci lattice methods
-
Differentiable Rendering
- overview of differentiable rendering - a technique gaining traction in machine learning
-
Moving Mobile Graphics - SIGGRAPH 2018
- slides for the Moving Mobile Graphics 2018 course from SIGGRAPH 2018
-
Journey into rust #2: Compute Shaders
- Game Of Life implemented using OpenGL compute shaders in Rust
-
Monte Carlo Integration
- an in-depth explanation WIP document about Monte Carlo integration
-
Color in advanced displays: HDR, OLED, AR & VR
- slides from the SIGGRAPH course - characteristics of an idealized display
-
Subsurface Scattering for Foliage (without Raytracing!)
- video tutorial on how to implement a subsurface scattering approximation with unity
-
Stencil Buffers
- a tutorial that explains how to use the stencil buffer with Unity
-
X-Ray Shader Tutorial in Unity
- a tutorial explains how to create an Overwatch style x
-
SIGGRAPH 2018 Stuff
- collection of observations and nuggets of information from different SIGGRAPH 2018 sessions
-
Basic Math for Shaders
- a visual explanation of foundational linear algebra concepts that are required for shader programm...
-
Demoscene session at SIGGRAPH 2018
- video of the demoscene session at SIGGRAPH 2018 - [Clouds in Wande](https://youtu.be/yqA71
-
Scatter Kernel
- next part of the series about developing a path tracer using Cuda
-
Some thoughts re Raytracing post-Siggraph 2018
- thoughts on open questions in regards to raytracing dynamic, open world type environments
-
A brief postscript on moment-based order-independent transparency
- brief discussion of difference between [Moment Transparency](https://dl.acm.org/citation.cfm?id=32...
-
Pathtracing Coherency
- look at different ray tracing scenarios and how they influence coherency between neighboring rays
-
Efficient rendering of layered materials
- slides for the layered real-time shading model discussed in [issue 38](https://www.jendrikillner.c...
-
High-Performance By-Example Noise using a Histogram-Preserving Blending Operator
- slides for the technique discussed in [issue 45](https://www.jendrikillner.com/post/graphics
-
NVIDIA Announces Nsight Graphics 2018.4
- added pixel history view for D3D12 and added support for support for Vulkan ray trace extension
-
GAME RAY TRACING: STATE-OF-THE-ART AND OPEN PROBLEMS
- overview of the PICA PICA hybrid raytracing pipeline
-
Not All Blue Noise is Created Equal
- comparison of 3 techniques to generate blue noise
-
Integrating clipped spherical harmonics
- integration of spherical harmonics over spherical polygons
-
May the Source Be with You: NVIDIA Open Sources Material Definition Language SDK
- Nvidia open sourced the MDL SDK (Material Definition Language)
-
Introduction to DirectX RayTracing
slides and [video](https://youtu.be/Q1cuuepVNoY?t=310) for the "Introduction to DirectX RayTracing" ...
-
NVIDIA Reveals Next-Gen Turing GPU Architecture: NVIDIA Doubles-Down on Ray Tracing, ...
- new GPU architecture from Nvidia - dedicated ray tracing hardware
-
SIGGRAPH 2018 Papers - Machine Learning, Graphics, and Rendering
- list of author's favorite papers with a brief summary of the content
-
Fundamentals of color science
- slides for the Siggraph course about the fundamentals of color science and color management for ga...
-
Introduction to the Vulkan Graphics API
- slides for the Siggraph course - provides an overview of all API interfaces required to render 3D ...
-
Imperfect Environment Maps
- using ideas from imperfect shadow map point-cloud rendering to implement reflections
-
Musings on cross-platform graphics engine architectures – Part 2
- breaks down the engine into two separate related concepts, Resource and Command management
-
High-Performance Graphics 2018
- slides for most of the talks have already been published
-
DX12 Ray Tracing Tutorials
- Nvidia tutorial on how to integrate DirectX raytracing and rasterization so that both rendering pa...
-
Rendering the Moana Island Scene Part 1: Implementing the Disney BSDF
. short description of the different aspects of the Disney BSDF, including source code
-
Screen-space Water Rendering
- a technique to render screen space water using unity
-
A Multi-Faceted Exploration (Part 3)
- improves upon the multiple scattering approximation from the previous part of the series
-
Shader Graph Updates and Sample Project
- walkthrough of two vegetation shaders created with the visual shader editor that was added in Unit...
-
Uniform points in sphere and capped cone
- how to improve the generation of uniform points in a sphere, disk, and a spherically capped cone
-
Clipping Objects with a Plane
- a tutorial that shows how to clip a mesh in a pixel shader against a plane using unity
-
The other pathtracer 5: Optimizing Triangle-Ray Intersections
- choosing a different algorithm to optimize triangle
-
Tiled Blue Noise
- a quick overview of blue noise tiled with various tile sizes from 16x16 to 256x256
-
A Cross-platform Evaluation of Graphics Shader Compiler Optimization
- explores source to source optimizations techniques using the LunarGlass framework with GLSL shader...
-
The State of GPGPU in Rust
- overview of libraries available to write GPGPU applications using the Rust programming language
-
Metal shaders: blending basics
- a short explanation and Metal shader code for different blend modes as described in the PDF specif...
-
Shader Showcase Saturday #4
- overview of different fire effects that are based around animated noise textures
-
Shader Showcase Saturday #5
- overview of different rain effects with links to more in
-
Filament - Physically-based rendering engine
- great in-depth discussion of the full PBR rendering pipeline, documentation for the [Filament e...
-
An implementation of physically based shading model & image based lighting in various...
- physically based shading model implemented using D3D11, D3D12, Vulkan and OpenGL 4.5
-
Generating random points in a sphere
- shows algorithms for generating random points within a sphere
-
Flowmapped-Burn-Shader
- breakdown of a burning shader implemented in Unreal Engine
-
Non-Scary Shader Intro 2: Vertex Fun
- part two of the series providing an introduction to vertex shaders
-
Explanation of the paper 'View-warped Multi-view Soft Shadows for Local Area Lights'
- summary of the paper: "View-warped Multi-view Soft Shadows for Local Area Lights " discussed in [l...
-
Optimize Memory Transfers - Using CUDA profiler to figure out why our renderer is slo...
- shows how to measure Cuda copy performance using the tools contained in the SDK
-
Aligning 3D scans
- the article discusses how to calculate the central axis from a 3D mesh
-
Vulkan - Multisampling
- explains how to use MSAA when using Vulkan - how to detect the supported sample count, set up t...
-
Twitter - Volume rendering thread
- twitter thread that provides a large number of links to information about volume rendering
-
Vulkan® 1.1.82 - Chunked Specification
- provides the Vulkan specification in a chunked version
-
Decoding Radeon Vulkan versions
- AMD provides a XML file that offers the possibility to map from external driver version to the ...
-
Xenko 3.0 is now free and open-source!
- Xenko, a C# based game engine has been released as open source with an MIT license
-
Compilation of 100+ 3D graphics academic papers
- collection of many 3D graphics research papers for a large number of different topics (sorted by t...
-
Think Silicon® releases GLOVE™, an OpenGL ES over Vulkan middleware as open source
- OpenGL ES implementation using Vulkan - licensed as LGPL v3
-
The Elusive Frame Timing
- explanation of frame stuttering - provides videos and frame by frame comparisons of what is causin...
-
View-warped Multi-view Soft Shadowing for Local Area Lights
- shadow technique for local area lights - based on the generation of view independent point clouds ...
-
Normals and the Inverse Transpose, Part 3: Grassmann On Duals
- part 3 of the series about Grassmann for computer graphics
-
Even more compute shaders
- explains how GPUs are able to execute multiple execution streams to hide memory latency
-
PIX 1807.19 – Shader Table Viewer
- added support for visualizing the content of DirectX Raytracing shader tables
-
Geometry Shader Adventures, Mesh Triangle to Particle
- explanation of a geometry shader in Unity that converts a triangle mesh into camera facing quad pa...
-
metal shaders: luminance
- explains how to calculate luminance and a very brief overview of the human vision
-
metal shaders: color adjustments
- look at image shaders that modify brightness, contrast, exposure, gamma or saturation using Metal
-
Disney Animation Data Sets
- the history behind the release of the Disney datasets of large
-
A High-Performance Software Graphics Pipeline Architecture for the GPU
- paper discussing the software implementation of the rasterization pipeline using compute shaders
-
Followup to Atmospheric Scattering—Part 1
- follow up series of 2012's GPU Pro 3 model - dynamic, real
-
Visualizing 2D Vector Fields
- showcase different ways to visualize a 2d flow field
-
TL;DR of the paper 'Conservative Z-Prepass for Frustum-Traced Irregular Z-Buffers'
- summary of "Conservative Z-Prepass for Frustum-Traced Irregular Z
-
Sampling Anisotropic Microfacet BRDF
- mathematical derivations of importance sampling for GGX, Beckmann, and Blinn
-
Writing a Modern Metal App from Scratch: Part 2
- part 2 of the Metal tutorial - adding support for depth buffers, some simple lighting with texture...
-
Vulkan input attachments and sub passes
- explanation of Vulkan render passes example - how to create Render passes
-
Musings on cross-platform graphics engine architectures – Part 1
- start of a series about graphics engine architecture
-
Revisiting The Vertex Cache: Understanding and Optimizing Vertex Processing on the mo...
- a new vertex cache optimization algorithm that is able to improve cache usage on NVidia hardware b...
-
TL;DR of the paper 'Revisiting The Vertex Cache: Understanding and Optimizing Vertex ...
- summary of the "Revisiting The Vertex Cache: Understanding and Optimizing Vertex Processing on the...
-
metal shaders: color inversion
- explains what color inversion is and how to implement it using metal
-
Multipass Shaders (& inverted Hull outlines)
- tutorial on how to use multi-pass shaders in unity to implement an outline drawing effect
-
An introduction to shader derivative functions
- explanation of partial derivates in pixels shader, (ddx, ddy in HLSL or dFdx, dFdy in OpenGL)
-
More compute shaders
- explanation of SIMD execution details for GCN - discussing latency, throughput, and scheduling
-
Rotating a vector using integer math
- a technique to rotate vectors on the GPU using only integer math
-
Gathering Feedback: Open Problems in Real-Time Raytracing
- Colin Barré-Brisebois is looking for feedback and open problems in real time raytracing
-
bezier bounding box
- how to calculate the bounding box for quadratic and cubic Bezier splines analytically
-
The Team Color Problem
- changing the color parts of a character at runtime using a mask texture
-
Blending an HDR color into a U8 Buffer
- explanation of how blending HDR values into an SDR render target behaves regarding clipping into t...
-
Writing a Modern Metal App from Scratch: Part 1
- tutorial how to write a Metal app for iOS - end results is a spinning, constant color teapot
-
Shader Showcase Saturday #1
- showcase of small rendering demos that showcase volumetric rendering effects
-
QuadriFlow: A Scalable and Robust Method for Quadrangulation
- a technique to generate quadrilateral meshes from triangulated meshes
-
Rudimentary temporal anti-aliasing solution
- GLSL implementation as a starting point for a temporal antialiasing solution
-
Real-Time Rendering, 4th Edition Bibliography
- bibliography of the Real-Time Rendering 4th edition
-
Progressive Sampling Strategies for Disk Light Sources
- comparison of combinations of six different sampling strategies for disk area light sources a...
-
Progressive Multi-Jittered Sample Sequences
- introduction of new strategies to generate progressive(hierarchical) 2D sample point sequences
-
HSV and HSL (colorpsaces XI)
- explanation and derivation of the HSV and HSL color spaces
-
Hybrid raytraced shadows and reflections
- implementation of a hybrid approach that mixes rasterization for first hit and raytracing for seco...
-
Breaking down barriers – part 4: gpu preemption
- provides an overview of GPU preemption strategies and how these affect application responsiveness ...
-
Pathtraced Depth of Field & Bokeh
- explains the physical properties of cameras, starting with a pinhole camera model
-
Rules of optimization
- explanation of performance culture, a working culture that treats performance as a core feature
-
Porting your engine to Vulkan or DX12
- video and slides from a talk that explains lessons learned from porting an AAA engine to Vulkan
-
Introduction to compute shaders
- how GPUs evolved from fixed function hardware to the uniform architecture used today
-
TL;DR of the paper 'High-Performance Procedural Noise using a Histogram-Preserving Bl...
summary of the paper "High-Performance Procedural Noise using a Histogram
-
How to start learning graphics programming?
- steps that the author recommends programmers follow that are interested in getting started in grap...
-
Vulkan layers don't work? Look at registry
- windows registry contains entries for Explicit Layers (all layers that can be loaded by a process)...
-
High-Performance Procedural Noise using an Histogram-Preserving Blending Operator
- a technique that allows the generation of infinite output space from a small example texture (such...
-
Spectral Remapping for Image Downscaling
- technique for downsampling images that preserves high
-
Stratified Sampling of Projected Spherical Caps
- a technique to improve importance sampling for spherical light sources by projecting the visible s...
-
TL;DR of the paper 'Stratified Sampling of Projected Spherical Caps'
- summary of the previous paper - explains the spherical cap projection and the intuition how this i...
-
High-Performance Graphics 2018 - Program
- program for the High-Performance Graphics 2018 in Vancouver has been published
-
Deferred Adaptive Compute Shading
- technique changes shading rate adaptively based on the local content of the image
-
Cube-to-sphere projections for procedural texturing and beyond
- overview of area-preserving approaches of cube to sphere mapping
-
TL;DR of the paper 'Cube-to-sphere projections for procedural texturing and beyond'
- summary of "cube-to-sphere projections for procedural texturing and beyond" paper
-
PIX 1806.20 – GPU Occupancy for AMD GPUs
- Pix now also support GPU occupancy visualization for all shader types on AMD GPUs
-
Materials for Polygons on Terrain and the Evils of Inverse Trigonometry
- polygons on terrain implemented as image-space decals
-
Understanding GPU context rolls
- explains what a context on AMD hardware is and how the driver manages these
-
Gradient Estimation for Real-Time Adaptive Temporal Filtering
- a technique that adjusts the temporal accumulation factor dynamically per pixel and frame
-
Compiling DirectXShaderCompiler on Linux/macOS
- Microsoft DirectX Shader Compiler is now also supported on Linux and macOS
-
Veldrid Support for SPIR-V Shaders
- low-level C# graphics library now supports SPIR-V shader for all supported backends
-
Breaking down barriers – part 3: multiple command processors
- discusses problems with synchronization between unrelated work when using a single command queue
-
Simball description
- explanation of the simball environment that has been initially designed for the Maxwell Renderer
-
Zelda – The Bling-Bling Offset
- shows how Zelda uses an FX in world space to make objects visible in high grass by adjusting the p...
-
Blackscreen checklist for OpenGL and D3D
- twitter thread with a checklist of common problems that can cause objects not be rendered in OpenG...
-
Adaptive Temporal Antialiasing
- the technique that mixes rasterization and temporal antialiasing to only ray trace pixels where a ...
-
Combining Analytic Direct Illumination and Stochastic Shadows
- C++ source code and prebuild demo application are released
-
Texture-space Decals
- The decals are projected from world space onto the mesh UV and rendered into separate per
-
The other Pathtracer 4: Optimizing AABB-Ray intersection
- optimizations to raytracer using SIMD - extending AABB tests to deal with various edge cases
-
Optimising path tracing: the last 10%
- shows how the runtime/compile time selection feature of the Rust programming language is used to s...
-
roblox graphics APIs 2018
- overview of rendering API support for the user of Roblox
-
lunarg releases new vulkan 1.1.77 sdk
- new sdk contains VK_KHR_get_display_properties2 and VK_KHR_draw_indirect_count extensions
-
Using Compute Post-Processing in Vulkan on Mali
- how to use two Vulkan queues to enable optimal scheduling for compute
-
Monte Carlo Integration Explanation in 1D
- explanation of to use Monte Carlo integration to calculate the area under a curve
-
PIX 1806.11 – Fence signals and waits visualization, major UI streamlining, new Edit ...
- timing capture now visualizes fence signal and wait
-
Lookup table based real-time PVRTC encoding
- using lookup tables to precompute the endpoints better compression results
-
Texturing in a 64kB intro
- discusses the history and design of their in-house procedural texture generation tool
-
Book of the Dead: Photogrammetry Assets, Trees, VFX
- discussion of the photogrammetry workflow - camera used to capture, tools to generate the mesh and...
-
PostFX v2 – Amazing visuals, upgraded
- overview of all the post effects that can be found in PostFX v2
-
Simple GPU Path Tracer
- explains the basic of path tracing used in his D3D12 path tracer
-
Cross-platform OpenGL alternatives
- discusses engines, frameworks, abstraction layers that support metal
-
Vulkan for Qt on macOS
- QT adds support for vulkan on macOS through [MolenVK](https://github.com/KhronosGroup/MoltenVK)
-
Real-World Measurements for Call of Duty: Advanced Warfare
- this in-depth document (26 pages) covers how real
-
HDR in Call of Duty
- an in-depth overview of color, color spaces, and color transformations
-
A Multi-Faceted Exploration (Part 2)
- look at solution developed by Imageworks compensates for the energy loss in a single bounce BRDF m...
-
Human-friendly classification of Vulkan resources
- proposal of how to group vulkan resources by usage type
-
Apple Announces that OpenGL and OpenCL will be Deprecated in macOS 10.14 Mojave
- Apple will start to deprecate OpenGL with macOS 10.14 and OpenGL ES with iOS 12
-
Metal for Game Developers
- how to generate command buffers in parallel on the CPU
-
How To become an advanced graphics programmer
- twitter thread with advice how to learn more advanced graphics programming topics
-
Sticking a thin lens in a ray tracer
- derivation of a ray function that implements the effects of a thin lens on rays
-
3d file formats, last mile vs. interchange
- looks at different file formats and discusses the difference between formats aimed at the intercha...
-
Multiview rendering in Vulkan using VK_KHR_multiview
- a sample that shows how to use the VK_KHR_multiview Vulkan extension
-
The Machinery Shader System (part 3)
- shader authors can define variations of shaders with a number of systems
-
Adding texturing to a glsl path tracer
explanations how ray tracing shaders in OpenGL can access the necessary textures for all objects ...
-
Pathtracer 13: GPU threadgroup memory is useful!
- moving the scene information into group shared memory to speed up the ray tracing code a lot
-
Pathtracer 14: iOS
- look at the iOS implementation with an overview of performance tools for CPU and GPU
-
Hybrid Multi-Frustum Logarithmic Depth Buffer
- now using Logarithmic depth buffer when available
-
Basis universal GPU texture format examples
- discussion of tradeoffs for the basis file format
-
Denoising with Kernel Prediction and Asymmetric Loss Functions
- extending previous work in CNN(Convolutional neural network) based denoising
-
Optimising path tracing with SIMD
- how to optimize a Rust path tracer using SSE4.1
-
On Games’ Power Consumption and phones
- the longer the CPU/GPU can idle, the less power is needed
-
Texture Distortion Faking Liquid
- Tutorial about the implementation of water surface movement of using a flow map in unity
-
A Trio of New Nsight Tools That Empower Developers to Fully Optimize their CPU and GP...
- NVIDIA Nsight Systems visualizes system-wide application interactions across CPU and GPU
-
Nsight Systems Exposes New GPU Optimization Opportunities
-how to investigate GPU starvation and detect CPU/GPU synchronizations and overview of other tools
-
INSIDE shipping on iOS
- many optimization lessons learned for mobile - how to deal with shader preloading
-
GPU Driven rendering experiments at the Digital Dragons conference
- discussions of problems with old occlusion culling systems
-
SIGNED DISTANCE FIELDS IN UNITY
- overview of how to generate a SDF in unity - per object SDF at build time
-
Never Map Again: Persistent Memory, System Memory, and Nothing In Between
- discussion of characteristics of different ways to pass CPU generated data to the GPU using Ope...
-
Fractal Raytracing: The Mathy Parts
- how the fractal raytracer was implemented on the GPU
-
Art Design Deep Dive: Rendering the player as a form of pure energy in Recompile
- discussion of a unique art style rendering technique
-
GPU Path Tracing in Unity – Part 2
- adds supports for a basic material system with lambert diffuse + phong specular
-
Advice for beginners, who are just getting started in Computer Graphics
- list of resource for beginners into graphics programming
-
Stochastic all the things: Raytracing in hybrid real-time rendering
- implementation details for reflections, translucency, transparency, shadows
-
How I got started with shaders (Non-Scary Shader Intro)
- explanations of how to get started with shader programming with unity
-
Checkerboard rendering, rotated anti-aliasing and grid frequencies
- Intro to sampling theory and how different sampling patterns influence the aliasing that can be ob...
-
My take on shaders: Spherical mask dissolve
- description of a shader effect that dissolves triangles outside of a spherical effect range
-
Game Math: Swing-Twist Interpolation (…Sterp?)
- slerp between two orientations takes the shortest path on a 4D hypersphere
-
A Multi-Faceted Exploration (Part 1)
- start of series that will look at lack of multi scattering in common analytical BSDFs and solution...
-
Multiple-Scattering BRDF
- derivation of the multi-scattering GGX BRDF - provides source code and precomputed lookup tables
-
Stripping scriptable shader variants
- explains what shader variations are - how to compute the amount of variations created for a shade...
-
Compressonator V3.0 Release Brings Powerful New 3D Model Features
- new image diff option allows visualization of pixel difference between compressed / uncompressed t...
-
Simple and efficient Vulkan loading with flextGL
- tool that allows to only include vulkan functionality that you need
-
Normals and the Inverse Transpose, Part 2: Dual Spaces
- introduction into vectors as functions and dual space
-
Writing a Portable CPU/GPU Ray Tracer in C#
- uses ShaderGen to write shaders in C# and compile them into the target shader language for D3D1...
-
Introducing Shader Playground
- website that allows compilation of shaders with a multitude of shader compilers and inspect the av...
-
GPU-Centered Font Rendering Directly from Glyph Outlines
- technical details about the font rendering algorithm used in [slug](http://sluglibrary.com/)
-
Game Math: Deriving the Slerp Formula
- presents one method to derive the slerp formula for quaternions
-
Programmability of Graphics Pipelines
- discusses issues with composability, how complexity poses a problem of sharing research results
-
Texture Arrays in Unity
- discusses problems with using a texture atlas - set of scripts to help with the creation, manageme...
-
Alpha Distribution
- technique that helps to reduce problems of disappearing geometry for alpha tested geometry
-
Optimizing Vulkan for AMD and the tale of two Vulkan drivers
- experience of using vulkan with AMD drivers (stock and open source)
-
Vulkanised is back!
- Khronos event focused on experiences of game developers that ship Vulkan versions on May22 in C...
-
How much does additive bind pose help?
- compressing animation key frames relative to the bind pose and presenting results
-
Efficient Rendering of Layered Materials using an Atomic Decomposition with Statistic...
- new model for layered materials - statistical analysis that uses an atomic decomposition of light ...
-
The Display Resolution of Head-mounted Displays, Revisited
- in-depth look at the distribution of display resolution across the VR display
-
Voxel DAGs and Multiresolution Hierarchies from large-scale scenes to pre-computed sh...
- tutorial course covering representation, usage and applications of voxel DAG and multiresolutio...
-
GPU Font Rendering - Current State of the Art
- unicode overview - overview of different font rendering techniques
-
HLSL for Vulkan: Semantic Strings and Location Numbers
- explanation of rules that apply to shader input structures and interstage linking
-
Spherical Gaussian series
- blog series about the mathematics of spherical gaussians
-
Stylized VFX in RIME – Water Edition
- how the stylized vfx in Rime was implemented - short overview of fire and smoke effect
-
SPIRV-Cross - Reflection API user guide
- explanation how to query reflection information from SPIR
-
The implementation of Pixel-projected Screen Space Reflections
- explanation of the implementation of [Pixel Projected Reflections](http://advances.realtimerenderi...
-
GPU Ray Tracing in Unity – Part 1
- how to implement a ray tracer using a compute shader in unity
-
Bokeh depth of field in a single pass
- shows the steps leading up the final implementation
-
2018 Vulkan Montreal Dev Day
- presentations from the Vulkan Montreal dev day - including updates about HLSL in Vulkan and descri...
-
Comparison of vertexcodec/indexcodec from meshoptimizer with Google Draco
- comparison of Draco and mesh optimizer output in regards to size and decoding time
-
GDC 2018 Presentations
- most of the AMD presentations from GDC have now been uploaded
-
Open Sourcing Seurat: bringing high-fidelity scenes to mobile VR
- tool that allows simplifications for static VR environments
-
i3D 2018 – Moment-Based Order-Independent Transparency
- build upon the ideas of moment shadow mapping - transparent geometry is rendered twice 1. deter...
-
Upcoming Oryol Changes (sokol_gfx.h migration)
- overview of the new rendering API - build around method chaining for the initialization of descri...
-
Nubis: Realtime volumetric cloudscapes in a nutshell
- summary of - cloud modeling and authoring system
-
Stratified sampling
- environment lighting is using several distributed area lights
-
Taking a Stroll Between The Pixels
- investigation of relation between linear interpolation and curve representations
-
NVIDIA SMP Assist API for VR Programming
- D3D11 extensions to simplify use of Lens Matched Shading and Multi
-
Reducing Vulkan API call overhead
- vulkan function calls pass through several layers until the actual function is executed
-
Dissecting the Rendering of The Surge
- 100% dynamic lights, 16 shadow maps in 4kx4k atlas
-
Daily Pathtracer 12: GPU Buffer-Oriented D3D11
- implementation of a buffer based (breadth first) approach for the raytracer
-
GPU texture compression error metrics
- overview of what error metric he uses when working/comparing encoders
-
OpenGL engine and PBR deferred pipeline with SSR/SSAO
- shows effect of different ray marching step sizes for screen space reflections
-
Comparison of backface culling efficiency for cluster cone culling
- comparison of backface culling efficiency for cluster cone, 64
-
Terrain Erosion On GPU
- discusses 3 different approaches for implementing thermal erosion on a height field based terrain
-
New BC7 encoder open sourced
- supports perceptual metric for compression - designed for opaque textures
-
HLSL for Vulkan: Resources
- descriptor types in vulkan vs D3D12 - how to specify resource bindings for vulkan in HLSL
-
2018 Vulkan Developer Day in Montréal
- April 30th, Vulkan Developer Day in Montreal, hosted by Ubisoft
-
Recolouring assets with lazy unwrapping!
- UVs map into a gradient texture - to change the colors the UVs are adjusted to point to other sect...
-
The Machinery Shader System (part 2)
- overview of the shader authoring format - shader input parameters are defined without thinking abo...
-
Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking
- microarchitectural details of the NVIDIA Volta architecture
-
Benefits of Image Based Lighting on Mobile
- MatCap texture contains lighting information for all camera space normals
-
Post-processing effects on optimization mobile gaming
- uses a texture based and camera facing quad approach instead of a post
-
Prefix Sums and Summed Area Tables
- algorithm to sum regions from arrays or grids in constant time
-
Unity Graphics Questionnaire
- unity graphics team is looking to gather feedback to improve the roadmap
-
Daily Pathtracer 10: Update C#&GPU
- performance numbers for all implementations with latest changes
-
Daily Pathtracer 11: Buffer-Oriented
- current approach recursively processes a single ray until it terminates
-
First steps when implementing FP16
- available with AMD vega architecture - pack two FP16 into FP32 register
-
Rainy SurfaceShader in UE4 Part 2
- combination of ripples and streaking effect - blending between the two effects based on surface or...
-
BC7 encoding using weighted YCbCr colorspace metrics
- many BC7 encoders compress all channels equally - for color textures, errors in red and blue are l...
-
ispc_texcomp BC7 issues
- discusses issue with the ispc implementation - compression has quality problems with grayscale tex...
-
Monte Carlo Methods for Volumetric Light Transport Simulation
- survey of methods utilizing Monte Carlo for light transport in participating media
-
Readings (shaders, maths, 3D)
- list of resources for beginners aimed at shader toy like graphics programming
-
intel metrics discovery
- library that allows access to GPU performance data on intel GPUs
-
Game Engine Architecture, Third Edition
It is my favorite book, and I own the first and second editions. It covers a vast amount of differen...
-
Foundations of Game Engine Development, Volume 2: Rendering
This book fills the gap where Game Engine Architecture needs more information about rendering. The ...
-
Physically Based Rendering: From Theory To Implementation
This book covers a modern and in-depth approach to the design and developemnt of a practical photore...
-
Foundations of Game Engine Development, Volume 1: Mathematics
This book provides an in-depth introduction to the mathematics required for graphics developers. It ...
-
Real-Time Collision Detection
This is a book that I find myself grabbing from the bookshelves quite regularly. It's my go
-
Data-oriented design: software engineering for limited resources and short schedules
This book is a quick and fabulous read to get a deeper understanding of what all this talk about dat...
-
Das Zettelkasten-Prinzip: Erfolgreich wissenschaftlich Schreiben und Studieren mit e...
This book covers the Zettelkasten method. A method of organizing knowledge based around a structured...