跳转至

Jendrik Illner

Graphics Programming weekly - Issue 335 - April 14th, 2024


GM Shaders Guest: Radiance Cascades

  • the blog post explains the Radiance Cascades technique for global illumination
  • shows the different stages of the algorithms and how to implement them for 2D cases
  • source code is provided


Flattening Bézier Curves and Arcs

  • the post presents three methods to convert (Quadratic, Cubic) Bézier curves and elliptical arcs into line segments
  • provides interactive examples to visualize the methods
  • An example javascript code is provided


3D Toon Rendering in 'Hi-Fi RUSH'

  • the GDC presentation provides an in-depth view into how the visual stylized shading was implemented
  • covers a large number of topics from Deferred Toon Rendering, Comic Shader, over Global Illumination to Toon Face Shadows and more
  • the game is based on Unreal Engine 4


DirectX State of the Union Ft. Work Graphs and Introducing DirectSR (Presented by Microsoft)

  • the GDC 2024 presentation covers the problems with Draw Indirect and how Work Graphs are designed to solve them
  • presents a walkthrough of the API and how AMD/NVidia have started to use the feature
  • additionally introduces DirectSR, the new API that abstracts upscaling techniques behind a command D3D API


[video] Coding Adventure: Rendering Text

  • the video deep dives into font rendering
  • starts by exploring the True Type Font format
  • showing how to extract the glyphs and the bezier curves that represent them
  • discusses several techniques to render the curves to form the fonts
  • presents issues and solutions for a large number of issues encountered


Graphics Programming Conference

  • a new graphics programming conference to happen in Breda (Netherlands) in November
  • currently looking for speaker and master class proposals


Thanks to Aras Pranckevičius for support of this series.


Would you like to see your name here too? Become a Patreon of this series.

Graphics Programming weekly - Issue 334 - April 7th, 2024


Recreating Nanite: Runtime LOD selection

  • the blog post discusses how to implement a continuous LOD system for meshlet-based rendering
  • shows how to calculate the error metric and structure the data for GPU access
  • presents how to select the correct LOD level at runtime
  • A video of the results is included


Optimizing UE5: Rethinking Performance Paradigms for High-Quality Visuals - Part 1: Nanite and Lumen | Unreal Fest 2023

  • the presentation provides an overview of the Nanite and Lumen systems
  • shows a high-level look at which parts affect performance and how performance intuition doesn’t match the classical rasterization model
  • the whole presentation slide deck is done in the UE5 editor


[video] Dithered Transparency in Unity Shader Graph

  • the video explains the difference between alpha blending and dithered transparency
  • shows sorting issues related to blending order and how dithered transparency solves them
  • presents how to implement the technique using Unity Shader Graph
  • additionally shows the limitations of the technique


RenderDoc - Version v1.32

  • the latest version adds support for Slang with Vulkan, additional extensions support, D3D12 Pixel history support, and many bug fixes


Copy Queue woes.

  • the article presents how usage patterns of copy queues to upload and download data from the GPU can significantly affect the amount of stalls
  • discusses the different patterns and presents timelines to show the waits
  • additionally shows how multiple copy queues interact and the importance of copy queue priorities


Real-Time Lighting with Gaussian Splats

  • the blog post describes a method to apply lighting to Gaussian Splats
  • shows methods to reconstruct geometry with normals and how to filter the results
  • additionally discusses limitations and ideas for improvement or leveraging of existing mesh-based solutions


[video] DJ! Swap that chain!!! // Vulkan For Beginners #7

  • the latest video in the series explains how to create a Vulkan Swapchain
  • explains the different presentation modes
  • additionally shows how to create a view of the different images of the swap chain


Thanks to Unai Landa for support of this series.


Would you like to see your name here too? Become a Patreon of this series.

Graphics Programming weekly - Issue 333 - March 31st, 2024


Game optimization with the AMD radeon developer tool suite

  • the GDC presentation provides an overview of the profiler tools available from AMD
  • presents the updated shader analysis tool, including a preview of the single shader stage mode
  • additionally presents an overview of the raytracing and memory debugging tool improvements


Moebius-style post-processing and other stylized shaders

  • the article presents a walkthrough of how to implement a post-processing effect that emulates Jean Giraud’s art style
  • shows how the author approached object outlines, shadows, and lighting patterns
  • provides interactive WebGL implementations that showcase the individual stages of the implementation


Open sourcing the WinPixEventRuntime under MIT

  • the blog post announces that the Windows PIX runtime has been released as OpenSource
  • this includes logic to decode PIX events as well as the runtime logic that writes ETW entries
  • additionally, the team is looking for feedback for a proposed task API for PIX


Sampling the disk from a square: The adoption method

  • the article introduces an alternative low discrepancy sampling strategy for circles
  • provides a quick introduction to rejection sampling
  • shows how adaption could be used to sample only within a quad within the disk and still fill the whole circle with samples
  • compares the characteristics of the technique and presents the applications to different shapes


Efficient CUDA Debugging: Using NVIDIA Compute Sanitizer with NVIDIA Tools Extension and Creating Custom Tools

  • the blog post describes how to use the CUDA Compute Sanitizer to implement a resize-aware memory pool
  • additionally discusses the APIs available to allow memory debugging more insightful


[video] GDC 2024 - Shader Instrumentation with GPU Reshape

  • the GDC presentation discusses how the GPU Reshape tool enables GPU timeline validation
  • explains how the validation logic can be written in an API-agnostic manner
  • provides a look at future developments where the same infrastructure could be used for profiling or data debugging


Ray Marching: Menger Sponge Breakdown

  • the article provides an introduction to ray marching
  • explains the underlying concept and how it compares to ray-tracing
  • extends the concepts to introduce the various operations (scaling, translations, boolean operations) required to express geometry
  • combines the knowledge to build a fractal object called the Menger Sponge


Thanks to Jhon Adams for support of this series.


Would you like to see your name here too? Become a Patreon of this series.

Graphics Programming weekly - Issue 332 - March 24th, 2024


Mesh shaders in AMD RDNA 3 architecture

  • the presentation discusses mesh shaders and the techniques they enable
  • discusses how to compress index data and how to allow quad source data
  • presents the importance of vertex reuse and meshlet generation for performance


[pdf] Post-mortem GPU crash analysis with AMD radeon GPU detective (RGD)

  • the presentation presents why debugging GPU issues is difficult
  • explains how the AMD Radeon GPU detective presents information to help developers track issues down
  • presents how to use the tool, read the information, and understand the cause of the issue with the information provided


Upgrade Your Graphics: Explore New Ray Tracing Features for NVIDIA Nsight Tools

  • the article discusses updates in the Nvidia developer tools
  • covers new debugging capabilities, improved performance collection, and profiling tools


Procedural grass rendering

  • the blog post describes how to implement a procedural grass system using mesh shaders
  • explains how the grass mesh is described using bezier curves and combined into a grass patch
  • presents how to write the index/vertex buffers for efficient rasterization


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
  • looks at how the denoiser is required to reduce the inherent noise images


GDC 2024: We reveal incredible Work Graphs performance, AMD FSR 3.1, GI with Brixelizer, and so much more

  • the article provides an overview of the announcements AMD made during GDC
  • additionally provides links to the slides and videos of the presentations


Adventures with Differentiable Mesh Rendering

  • the article explains how to approach differentiable rendering for mesh-based rasterization
  • presents the limitations of a simple method and how to achieve it with PyTorch
  • expands the idea to expand the idea with soft probability to solve some of the limitations


Graphics Programming – Where To Start?

  • the article provides a suggested collection of resources for beginners in graphics programming
  • covers mathematics, working with APIs, and writing shaders


[video] It is illogical (device) // Vulkan For Beginners #6

  • the video provides a brief overview of the difference between physical and logical Vulkan device
  • presents the C++ code necessary to implement the device creation


Thanks to Stephen Hill for support of this series.


Would you like to see your name here too? Become a Patreon of this series.

Graphics Programming weekly - Issue 331 - March 17th, 2024


[video] Too Many Developers Ignore These Optimisations

  • the video provides a walkthrough of the steps when optimizing a voxel renderer
  • each step is explained and visualized to make it very easy to understand
  • covers a large number of optimizations and, for each, discusses the effect on performance and memory usage


Unlock Seamless Material Interchange for Virtual Worlds with OpenUSD, MaterialX, and OpenPBR

  • the article provides an overview of the different models available to describe the appearance of a mesh using OpenUSD
  • Explain the advantages and the disadvantages of the available methods


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
  • covers work graphs, new shader model, accessible memory for CPU/GPU, as well as unifications on shader creation


D3D12 Work Graphs

  • an overview from Microsft into what work graphs are
  • what possibility it enables, a brief summary of the spec
  • additionally points out the changes since the preview version last year


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 authored using work graphs
  • provides performance numbers for the work graph and an Uber shader approach
  • discusses lessons learned, pitfalls, and performance considerations
  • It additionally discusses the open challenges and future developments


GDC 2024: Work graphs, mesh shaders, FidelityFX™, dev tools, CPU optimization, and more.

  • AMD provides a list of talks they will be presenting at GDC (starting today)
  • each talk is given a small summary and where it’s taking place


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 approach from Siggraph 2005
  • provides an overview of the approach with many visualizations
  • shows how to implement the algorithm using D3D12 mesh shaders
  • source code is provided


Random walk method for quaternions

  • the blog post discusses a method for generating uniformly distributed quaternions
  • explains the theory of quaternion and the proposed method to generate random rotations
  • provides an implementation without using trigonometric in C++ SIMD as well as GLSL


Cross-Stage Shader Optimization

  • the whitepaper presents which tools and optimizations passes in spirv-cross and glslang are available to optimize shaders, taking advantage of knowledge from multiple shader stages
  • shows an example of how vertex outputs can be eliminated if the connected pixel shader doesn’t read the attribute


Recreating Nanite: LOD generation - faster, better, simpler

  • second part in an article series about creating a LODing system that allows per-cluster LOD selection
  • focuses on performance and quality fixes for the proposed solution from part 1


[video] 3D Gaussian Splatting! - Computerphile

  • the video provides an explanation of Gaussian Splatting and how it connects to point clouds and nerfs
  • presents the base idea and optimizations that have been applied to speed up the technique


PIX 2403.08 – New D3D12 features + misc PIX improvements

  • the blog post provides an overview of new features and improvements in PIX
  • additionally presents at which state of support the new D3D12 features, such as shader graph, shader model 6.8, etc.

Thanks to Erika for support of this series.


Would you like to see your name here too? Become a Patreon of this series.