Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

126 Neutral


About jendrikillner

  • Rank

Personal Information


  • Twitter

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Optimize your engine using compute @ 4C Prague 2018 overview of the compute shader execution and pipeline model explains how instructions are executed, what the difference between uniform and non-uniform work is and how it relates to SGPRs and VGPRs using the example of texture downsampling to present the performance profile of a pixel shader solution and why a compute shader solution can achieve better performance pptx archive wayback-archive Intro to gpu scalarization – part 1 overview of the GPU execution model, the difference between scalar and vector registers and instructions explains the concept of scalarization and how wave level instructions enable this process pptx archive wayback-archive Intro to gpu scalarization – part 2 walkthrough of two different strategies to scalarize the forward+ shading loop provides code, step by step analysis and links to more in-depth presentations pptx archive wayback-archive SIGGRAPH Asia 2018 – Technical Papers Trailer overview of some of the technical papers that will be presented during SIGGRAPH Asia 2018, 4-7 December 2018 in Tokyo niagara: GPU object culling adding support for multiple meshes and GPU frustum culling and submission one Dispatch to execute culling and one ExecuteIndirect is used to draw the rest of the scene code niagara: Faster culling and LOD improving culling performance through the removal of dummy draw calls implementation of LOD selection per mesh support querying of pipeline statistics to gather information about the number of triangles drawn code VK_NVX_raytracing - Triangle A walkthrough that explains all the concepts and shaders necessary to ray trace a single colored triangle using the Vulkan raytracing extension code wayback-archive Accelerated Ray Tracing in One Weekend in CUDA explains how to convert the code from the Ray Tracing in One Weekend book to use CUDA the source code is available here, one branch for each chapter code wayback-archive 2D Signed Distance Field Basics unity tutorial that explains how to create a signed distance field for a 2D circle and rectangle how to apply transformations (translation, rotation, scale) and how to visualize the distance field to aid debugging wayback-archive Picking and Hit-Testing in Metal explains how to implement 3D picking in a Metal application overview of coordinate spaces and how to convert between them hit-testing performed using a ray vs. bounding sphere test wayback-archive Few words about HLSLexplorer a tool, now open source, that allows the compilation of HLSL and shows the disassembly in DXBC and AMD GCN includes a small utility to visualize the effect of a fullscreen pixel shader effect wayback-archive Image Editor Effects list of image effects found in tools such as Photoshop with a small explanation and GLSL code snippets code If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  2. 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 material able to significantly reduce the number of samples required published a new large database of measured BRDFs that have been captured using this technique paper archive database archive video archive wayback-archive halcyon + vulkan presents an architecture overview of the engine render backends are implemented as DLLs that can be reloaded at runtime multiple backends can be loaded at the same time resource handle system that allows the same resource to point to physical instances on multiple GPUs GPU work is recorded into an abstract command stream that is later compiled into API specific format render graph system that manages resource transitions, lifetimes, and execution order showcase of shader binding model using HLSL spaces concept to separate between update frequencies explanation how the HLSL resource binding model was emulated with SPIR-V using shader patching .pptx archive .pdf archive wayback-archive 2d graphics in Rust discussion - A look at GPU memory management discusses considerations when designing memory components for use with gfx-hal (rust graphics API abstraction) proposes not to use a general purpose allocator but instead to implement simple allocator components and combine them into context-aware allocators on a higher level wayback-archive DXRPathTracer open source path tracer implemented using the DirectX Ray Tracing API 16xAA font rendering using coverage masks, part I presents a technique for font rendering that operates on coverage instead of visibility this allows fonts to remain sharp when moving on the screen and at varying font sizes for each pixel in a glyph, a 4x4 sub-sample grid of visibility samples is calculated ahead of time explains how to use this coverage mask to implement font rendering covering how to sample the coverage mark correctly for axis-aligned font rendering wayback-archive PIX 1810.24 – Support for final DirectX Raytracing API new PIX version that supports the final DirectX Raytracing API version wayback-archive NVIDIA Announces Nsight Graphics 2018.6 full Linux support for Vulkan and OpenGL 4.5 support for final DirectX Raytracing API and new supports Vulkan extensions such as VK_NV_shading_rate_image, VK_NVX_raytracing wayback-archive 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 RGB channels presents a heuristic to decide what BC7 mode to use on a per-block basis to improve the compression wayback-archive profiling: the case of the missing milliseconds case study of a performance regression in League of legends presents what performance data they collected shows what problems they had with the existing data and how a better aggregation of performance data into distinct buckets allows better detection of performance regressions wayback-archive Effectively Integrating RTX Ray Tracing into a Real-Time Rendering Engine provides best practices for applications that use the RTX API talks about acceleration structure creation and updating how to improve memory usage, improve performance and best practices for shader authoring and compiling wayback-archive large scale ambient occlusion: eliminating light leaks presents how to reduce light leaks in a large scale global illumination system each geometry is associated with markup information about visibility zones GI light data is only applied if two pieces of geometry are in the same visibility zone or are visible through connected portals wayback-archive SPIR-V Compression: SMOL vs MARK comparison of two libraries to compress SPIR-V shaders SMOL-V MARK-V compares for compression ration, decompression speed, and library size MARK-V achieve great compression results, but the library has a large memory footprint and is slow at decompressing the data wayback-archive Custom Shaders HLSL and Core Library a tutorial that explains how to create a custom shader for use with the scriptable render pipeline in Unity teaches how to interact with constant buffers presents what is required for GPU instancing to be supported by a shader and how to pass custom per-material data to the instanced meshes wayback-archive 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 top of Vulkan talks about why this project was started, and what is and is not supported at this point wayback-archive Graveyard Keeper: How the graphics effects are made shows how the lighting system in the 2D game was implemented making heavy use of color remapping LUTs sprites have normal maps, lights move in 3D space with custom light falloffs for lights moving behind sprites discusses how shadows and fog are applied presents how a deformation shader is used to simulate wind wayback-archive niagara: Tuning mesh shaders optimizing mesh shading pipeline, can now reach >20B triangles/second (input triangles, before cone culling) code niagara: Multi draw indirect adding per object transformation and depth buffer support switched to using multi-draw indirect for classical and mesh shader based pipeline code If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  3. Mipmapping with Bidirectional Techniques brief overview about what mips are and how to calculate mip selection in a rasterizer explains ray differentials, a technique that can be used for mip selecttion on primary rays discussion of problems with ray differentials on other ray types, possible solutions and look at what other production renderers use solution using a distance to camera metric and presenting the results by comparing against other techniques wayback-archive Entity-Component-Systems and Rendering explains the plugin architecture that enables efficient implementation of high-level graphical features how to interact with the scene, culling, scheduling, and GPU execution wayback-archive DXC Cookbook: HLSL Coding Patterns for SPIR-V SPIR-V shaders can only access global resources HLSL is very flexible with resource usage this post shows what usage pattern DXC is able to transform into legal SPIR-V and what patterns cannot be expressed in SPIR-V wayback-archive River Editor: Water Simulation in Real-Time walkthrough of the development of real-time GPU based water simulation discusses simulation experiments and algorithms used a brief look at the lighting of the water wayback-archive Video Series: Practical Real-Time Ray Tracing With RTX post that provides links to talks with summaries about ray tracing on Nvidia RTX hardware difference between rasterization and ray tracing the structure of a real-time ray-tracing application and the components required how to extend the raster-based application with ray-tracing wayback-archive Turing Texture Space Shading overview of texture space shading technique decouples shading from rasterization rate Turing hardware provides support for computing derivatives in compute shaders and exposes texels that need to be shaded linked video explains the implementation of a texel space shading pipeline wayback-archive 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 wayback-archive Visualizing quaternions - An explorable video series visual and interactive explanation of quaternions and stereographic projection niagara: Parsing SPIRV usage of descriptor update templates SPIRV parser implementation niagara: Meshlet culling cone culling in task shaders two implementations, one using shared memory atomics and one with other subgroup operations HLSL - Spherical-Harmonics collection of HLSL functions to use spherical harmonics Mathematica notebook to verify and visualize SH functions SIGGRAPH 2018 Course: Machine Learning and Rendering all content from the SIGGRAPH 2018 course has been published wayback-archive D3d12info console tool to get collect capabilities information from DXGI and Direct3D 12 If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  4. Physically Based Rendering, online the complete 3rd edition of Physically Based Rendering is now online for free the post explains the history of the book and decisions that led to making the book available for free authors can be supported on https://www.patreon.com/pbrbook wayback-archive From screen space to voxel space summarizes voxel ray tracing implementation, memory and performance optimizations show the different artifacts that can be encountered and their solutions wayback-archive Adding multiple bounces next part in the Metal ray tracer series that adds support for multiple bounces to simulate global illumination implements importance sampling for diffuse BSDF wayback-archive Improving material system extending the material system of the Metal raytracer so that multiple materials can be expressed and importance sampled correctly changes sampling heuristic to support multiple importance sampling. This enables both rough and mirror-like surfaces wayback-archive Multilayer Light Simulations: More Beautiful Images, Faster 2-minute video summary of the “Position-Free Monte Carlo Simulation for Arbitrary Layered BSDFs” paper Flavors of Sampling in Ray Tracing overview of the strengths and weaknesses of different sampling techniques in ray tracing presents links to papers that present methods that are aimed at creating better-stratified sampling results wayback-archive niagara: Future of rasterization stream that adds support for rendering meshes using Nvidia mesh shader extensions niagara: Optimizing mesh rendering during the stream, the mesh shader pipeline is optimized performance parity with the classical rasterization pipeline is achieved without GPU culling How to make a fake interior effect with unity using reflection probes shows how to implement interior mapping using the Unity reflection probe system explains how to set up the model and environment to generate the required probes and how to apply the reflections to the windows wayback-archive Rust Mesh Optimizer rust version of the meshoptimizer library is now available the post explains how to setup Rust code to be able to compile, link and use existing C code from Rust wayback-archive Global Illumination in Godot Engine @ Gamelab BCN 2018 the presentation explains how Global illumination has been implemented in the Godot engine talking about GI probe generation, deterministic light baking and the interacting with the shading pipeline How I Grow with Grass Shader walkthrough of a Godot shader that uses particles to spawn vegetation meshes based on height map and feature (biomes) map data wayback-archive Alpha blending using pre-multiplied alpha a brief summary of the usage of premultiplied alpha using Vulkan pre-multiplication is done in the pixel shader, no texture pre-processing is used wayback-archive If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  5. Distance Fields explains an O(n) algorithm that calculates 2D distance fields by operating on rows and treating samples as overlapping quadratic parabolas shows ideas to visualize distance fields, generate tiling noise and some use-cases of distance field functions wayback-archive 2018 XDC - Khronos slides from XDC (X.Org Developer’s Conference) Vulkan timeline semaphores allow increasing a 64-bit value on signal and wait on “greater than” a target value unified system for CPU and GPU waits look at how to implement them in the drivers many more talks about OS-level graphic topics wayback-archive Mesh Shader - Implicit Subdivision on the GPU compute shader based adaptive GPU tessellation technique using Mesh Shaders on Turing up to ~25% rendering time reduction at high tesselation rates Introduction to Real-Time Ray Tracing with Vulkan explains the Vulkan ray-tracing extension contains an overview of the ray tracing pipeline, the new shader types and how to interact with the API shows how to generate the acceleration structure, update and compact it as required wayback-archive Deep Compositing and Reprojection explains the mathematical foundation behind deep composition that allows compositing of volumetric effects such as fog wayback-archive 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 uses a binning scheme on rays combined with on-demand geometry loading to be able to render the scene on a 32 GB RAM machine wayback-archive Project: SDL render batching discusses a change to the SDL render back-end that will batch CPU rendering commands to reduce the number of draw calls required this will improve performance significantly wayback-archive Gfx-hal Tutorial part 2: Vertex buffers next part of the series on gfx-hal usage (low-level graphics API for Rust) adds support for loading and using vertex buffers wayback-archive Ripples For Days explains a water ripple system implementation that uses a top-down projection of ripples onto the water surface in a separate rendering pass wayback-archive distance functions updated SDF function for a capped cone, round cone, and an ellipsoid wayback-archive If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  6. niagara: Cleaning up Vulkan stream - part 3 fixing validation layer errors, explanation of pipeline barriers implementation of swap chain resize shader compiler integration with Visual Studio niagara: Rendering a mesh Vulkan stream - part 4 overview and integration of Vulkan extension loader loading an .obj and rendering a mesh using classical vertex pipeline and manual vertex pulling “Cheap” Diamond Rendering explanation of shader for diamond rendering in a forward rendering architecture uses a precalculated cubemap from the inside of the object to simulate internal bounces wayback-archive My journey into fractals discussing many aspects of making a voxel-based game including cone tracing, lighting, shadows, ambient occlusion, volumetric lighting, and atmospheric effects wayback-archive 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 results are very similar to the recent jcgt paper wayback-archive Running Average Encoding - Why It Works derivation of the progressive spherical Gaussian encoding technique discussed in last week’s issue wayback-archive 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 problems persists wayback-archive GLSL cross-compiler tool command line tool that allows cross compilation from GLSL to HLSL, GLES and MSL (Metal) implemented using a combination of Glslang and SPIRV-cross A Comparison of Modern Graphics APIs work in progress post comparing API concepts between D3D12, Vulkan, Metal, and OpenGL wayback-archive DirectX Raytracing and the Windows 10 October 2018 Update Windows raytracing support is available starting with Windows 10 October 2018 update wayback-archive Video Series: Real-Time Ray Tracing for Interactive Global Illumination Workflows in Frostbite breakdown of “Real-Time Ray Tracing for Interactive Global Illumination Workflows in Frostbite” into short sections key takeaways for each section is provided in the post wayback-archive Parsing Shader Includes explains how to parse a shader file for includes using regex (implemented using Rust) wayback-archive SRP101 collection of resources to get started with the Unity Scriptable Render Pipeline wayback-archive Perspective Matrices and Depth visualization of floating point precision when a classical OpenGL projection matrix is used wayback-archive Art That Moves: Creating Animated Materials with Shader Graph explanation of Unity shader graph nodes walkthrough of example shaders that allow the creation of a small island scene wayback-archive PIX-1810.02 – Direct3D11 and WinML new PIX features are available with Windows 10 October 2018 can capture D3D11 applications using Direct3D 11 on 12 translation layer and WinML workloads wayback-archive Vulkan SDK adds support for Turing extensions wayback-archive Qualcomm Releases Snapdragon Profiler with Vulkan Support new profiler version now supports Vulkan wayback-archive If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  7. Turing Variable Rate Shading in VRWorks explains what variable rate shading is and what use cases it enables a control texture allows varying of the shading rate on a 16x16 pixel grid wayback-archive Turing Multi-View Rendering in VRWorks explains the recent developments in VR headsets and how Turing offers new hardware solutions extensions that allow rendering up to 4 different views, with view-dependent attributes using a single invocation wayback-archive Spherical Gaussian Encoding a new encoding method for Spherical Gaussians that improves quality from previous encoding methods wayback-archive Interior Mapping: rendering real rooms without geometry presents a high-level overview of how to implement interior mapping comments have much information about the timeline of games that used similar techniques wayback-archive Efficient Instancing in a Streaming Scenario discusses a technique to generate instanced geometry procedurally on the GPU using OpenGL compute shaders aimed at filling vast streaming worlds that are broken down into tiles wayback-archive niagara: Building a Vulkan renderer from scratch* new stream coding series about the creation of a Vulkan renderer from scratch the first two episodes implement rendering of a single triangle on screen Adaptive GPU Tessellation with Compute Shaders pre-print of an article that will appear in GPU Zen 2 implements adaptive tessellation using OpenGL 4.5 compute shaders source code: https://github.com/jadkhoury/TessellationDemo wayback-archive Claybook, raw->typed buffer performance analysis numbers Twitter thread discussing Raw vs. Typed buffer performance on Claybook suggest using raw buffers if supported wayback-archive CUDA 10 Features Revealed: Turing, CUDA Graphs and More overview of new features included in CUDA 10 Multi-Precision Tensor Cores are exposed on Turing CUDA Graphs allow the specification and recording of an execution graph that can be executed multiple times, this reduces overhead and allows the compiler to apply further optimizations interoperability with Vulkan and D3D12 is supported wayback-archive Voronoi Noise explains how to generate 2D and 3D noise in a Unity shader wayback-archive Metal Raytracer - Implementing diffuse BRDF extends the Metal raytracer with obj model loading a simple diffuse BRDF implementation, including frame accumulation and shadows provides a Mitsuba test scene wayback-archive Mesh Shader Possibilities walkthrough of the geometry pipeline on current GPU architectures and how mesh shaders fit into it description of an upgrade path to mesh shaders look at possibilities of future use cases wayback-archive The Peak-Performance-Percentage Analysis Method for Optimizing Any GPU Workload updated post now includes SM warp-issue-stall metrics previously discussed in issue-26 wayback-archive readings on the state of the art in rendering summary of resources for graphics programmers to study and keep up-to-date with the graphics programming community wayback-archive Custom Pipeline Taking Control of Rendering a tutorial that shows how to implement a custom rendering pipeline in Unity implements skybox rendering, culling filtering, sorting and rendering of unlit objects how to improve memory usage and better integration with the Unity frame debugger wayback-archive SIGGRAPH 2018 Tech Talk Videos Now Available! Unreal released the tech talks from SIGGRAPH 2018 Virtual Production in Unreal Engine 4.20, Mixed Reality Production with Unreal Engine, Fortnite: Advancing the Animation Pipeline, Real-Time Motion Capture in Unreal Engine wayback-archive If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  8. Introduction to Turing Mesh Shaders new shader stages on Turing that allows the generation of primitives for direct consumption by the rasterizer task shader: emits mesh shader workgroups allows work on larger clusters, the selection of mesh resolution, … mesh shader: generates primitives (index + vertex buffers) OpenGL shader implementation that uses the new shader stages to allow culling on a per-cluster basis and generation of efficient mesh data video recording wayback-archive Challenges of Rendering an Open World in Far Cry 5 talks about the challenges of developing for open world games covers water rendering, physically based time of day model, nighttime rendering lighting, exposure, emissive effects, and tone mapping material blending wayback-archive 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 precomputations or spatial data structures uses rasterizer pipeline to generate screen-space AABB to limit tests to only potentially visible pixels provides GLSL shader implementation wayback-archive Breaking down barriers – part 5: back to the real world explains the evolution of the windows graphics driver model from win7 to win10 how WDDM 2.0 enables the features of D3D12 differences between D3D12 and Vulkan regarding queue submission design D3D12 fences are designed to enable the OS to control command buffer scheduling look at Nvidia and AMD hardware details wayback-archive hybrid raytraced shadows part 2: performance improvements explains optimizations done to the hybrid shadow raytracer change to the way the BVH layout is constructed (Surface Area Heuristic) and memory layout changes enable huge speedups (16ms to 0.8ms on the GTX970) wayback-archive NVIDIA Turing Architecture In-Depth overview of the new Turing hardware architecture description of new hardware features, exposed shader features, and improvements to existing technologies wayback-archive NVIDIA Turing Vulkan/OpenGL extensions an extensive list of OpenGL and Vulkan extensions that expose the new Turing hardware features with short descriptions of each feature wayback-archive Vulkan conditional rendering Vulkan extension that makes it possible to skip parts of command buffers based on the content of a GPU buffer the example uses this to pre-generate a single command buffer and controls visibility of mesh parts from the CPU wayback-archive Shader Showcase Saturday #9: Interior Mapping overview of the interior mapping technique showcase of different implementations and links to further information wayback-archive roughness mip maps based on normal maps? discussing of a technique that tries to preserve normal map variation by generation MIPs that preserve the variance in the roughness map the comments contain links to further reading about this topic wayback-archive Running Microsoft FXC in Docker comparison of DXC (DirectX Shader Compiler) and FXC shader compiler in regards to performance and functional regressions provides a docker file that allows FXC to run successfully wayback-archive Running Microsoft DXC in Docker provides a configuration that allows the DXC compiler to run within docker wayback-archive Signing DXIL Post-Compile explains the process that enables DXIL shaders to be signed after they have been compiled provides code for detecting if a shader has already been signed and how to call the necessary libraries to sign the shader provides a command line utility that can be used to sign DXIL shaders wayback-archive Metal ray-tracer start of a series of posts that will describe the development of a ray tracer using Metal Performance Shaders wayback-archive Vulkan has just become the world’s first graphics API with a formal memory model. So, what is a memory model and why should I care? Khronos released provisional material on the memory model for Vulkan including the specification, extensions for SPIR-V, GLSL and conformance tests wayback-archive Debugging D3D12 driver crash presents a small cross-vendor library for D3D12 that allows collection of information to narrow down GPU hangs to specific draw call ranges wayback-archive 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 explains the expected API, what is required for a good experience and how the implementations differ between platforms wayback-archive Smooth Geometry in Real-Time Rendering discusses challenges and possible solutions to undersampling artifacts on curved geometry wayback-archive SIGGRAPH 2018 Course: Machine Learning and Rendering links to the presentations from the machine learning and rendering course from Siggraph wayback-archive DLSS: What Does It Mean for Game Developers? an interview that explains what Nvidias DLSS is (Deep Learning Super Sampling) a trained neural network that is able to infer a 64 sample per pixel supersampled image from a 1 sample per pixel source the model is trained on Nvidia GPU clusters before the release of the game wayback-archive Value Noise explains how to generate value noise in a shader wayback-archive Perlin Noise explains how to generate Perlin noise in a shader wayback-archive Layered Noise extends the Perlin noise implementation from the previous tutorial to support mixing of multiple layers of Perlin noise uses this to generate a dynamic terrain in a vertex shader wayback-archive Using Command Buffers in Unity: Selective Bloom explains how Unity command buffers enable the extension of the Unity graphics pipeline uses this to implement selective bloom on objects wayback-archive If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  9. I am going to be on vacation for the next two weeks so this series will take a small break and will return on September 24th. Pseudo-bandlimited pixel art filtering in 3D – a mathematical derivation presents a filtering approach for a pixel art style in a 3D environment discussion of filtering theory and derivation of a filter for real-time use provides GLSL implementation of the filter wayback-archive Spotlight Team Best Practices: Setting up the Lighting Pipeline in-depth documentation for unity explains the most common terms, the difference between the rendering pipelines with strengths and weaknesses explains the difference between global illumination systems and light modes provides 4 example scenarios that show how the desired game influences the decisions wayback-archive Real-Time Ray Tracing of Correct* Soft Shadows shows how to reformulate the rendering equation so that stochastic shadows can be combined with non-stochastic shading explains how to denoise the stochastic shadows shows results and discusses the performance of the approach wayback-archive API without Secrets: The Practical Approach to Vulkan* Preface start of a new Intel series about Vulkan the focus is on the high-level usage and will be comparing different approaches to common problems walkthrough of the structure of the series and how the sample code will be structured wayback-archive API without Secrets: The Practical Approach to Vulkan* - Part 1 investigates the performance effect of different acquire → render → present approaches shows visually why two sets of frame resources are required to utilize the available hardware efficiently the sample allows experimentations with different scene complexities and CPU workloads wayback-archive Device Memory Management explains the strategy how GPU memory is currently managed and what allocation strategy is used shows a visual representation of allocator usage and discusses the weaknesses of the current approach, pointing to possible future improvements wayback-archive Animated Candle Flame write-up tutorial on how to implement a candle flame using 3 separate texture channels and noise distortion using unity wayback-archive 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 D3D11 shader disassembly provides the reverse engineered HLSL source code wayback-archive hacking a generic ray-triangle intersector reusing a generic ray-triangle intersection for other calculations such as calculating the distance from a ray to a curve segment wayback-archive Looking Through Water Underwater unity tutorial that extends water with flow map (previous part of the series) to support transparent water rendering apply underwater fog and approximation of refractions wayback-archive Large scale ambient occlusion: introduction overview how the large-scale ambient occlusion data is baked for Homefront: The Revolution implemented using rasterization with an orthographic projection and per-pixel linked lists runtime information stored in regularly spaced cells wayback-archive Baking artifact-free lightmaps on the GPU article discussing what is required to achieve high-quality lightmaps UV space rasterization, using a UV G-buffer to collect necessary information to trace rays dealing with shadow leaks and UV seams an algorithm to enable mipmap generation for lightmaps wayback-archive Why Clip Transformed Vertices in Clip-Space? explains why clipping happens in 4D clip space before the perspective divide is applied wayback-archive Siggraph 2018: A developer’s viewpoint blender developers view of the technologies shown at Siggraph talking about USD / Hydra, MaterialX / ShaderX / OSL / Gaffer and OpenColorIO wayback-archive An edited (and extended) version of my OSL BOF talk at SIGGRAPH 2018 overview of the open shading language in 3ds Max how OSL was implemented into the 3ds max architecture discusses problems encountered and improvement possibilities for OSL Contact-hardening Soft Shadows Made Fast explains what contact-hardening shadows are presents one technique that can be used to implement them and deal with artifacts discussions of a method to optimize the process by splitting the shadow mask generation into two passes the first pass generates the penumbra mask at a quarter resolution and the second pass generates the soft shadows, sampling from the quarter resolution penumbra mask wayback-archive High-Performance Graphics 2018 the slides for all talks from the High-Performance Graphics 2018 conference have been uploaded wayback-archive Radeon GPU Profiler 1.3 can now show register and LDS (Local data share) usage as well as theoretical occupancy new render target overview table, provides information about all render targets in the frame in one location more robust handling for applications that create multiple device contexts wayback-archive GBuffer helper – Packing integer and float together explains how to pack an integer and a floating point number into a single unsigned render target channel provides source code for packing and unpacking into a variable number of available bits wayback-archive If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  10. DD2018: Paul Malin - HDR display in Call of Duty video for the talk that was discussed in issue 42 an in-depth overview of color, color spaces, and color transformations discussion of HDR standards ACES pipeline overview implementation of HDR pipeline covering: tone curve, display mapping, UI rendering universal CLUT and color grading Material Advances in Call of Duty: WWII normal and gloss mipmapping using a shortened normals technique normals are shortened based on the glossiness how to combine different textures to add detail to a base texture material surface occlusion reformulation of Ambient Occlusion that adds indirect lighting in the occluded parts of the material adds micro-shadowing from material occlusion into the direct-lighting component indirect specular occlusion, using 3D Environment BrdfLut, 3rd dimension is cone angle multi-scattering diffuse BRDF utilizing an approximation stored in a 2D LUT wayback-archive Tech Note: Shader Snippets for Efficient 2D Dithering present HLSL code snippets that implement different kinds of dithering and an example application comparison of quality and performance of the different dithering techniques wayback-archive A Life of a Bokeh an in-depth walkthrough of the new Depth of Field implementation in Unreal Engine 4 discussing problems encountered, solutions and optimizations includes many small code snippets better results and better performance than the old UE4 implementation wayback-archive The Road toward Unified Rendering with Unity’s High Definition Render Pipeline discusses architecture, light culling, clustered lighting implemetation how feature parity between deferred and forward pipeline is achieved implementation of decal system using a D-buffer (similar to g-buffer but for decals only) details about material types, lighting features, volumetric systems wayback-archive Efficient Screen-Space Subsurface Scattering Using Burley’s Normalized Diffusion in Real-Time presentation of a screen space subsurface scattering model, they call it the Disney SSS model is using a single tweakable parameter that makes it easy to use for artists implementation details for a thick and thin object model and optimizations to the implementation wayback-archive Real-Time rendering’s next frontier: Adopting lessons from offline ray tracing to real-time ray tracing for practical pipelines start tracing rays where rasterizer has shortcomings explains how to tune Monte Carlo estimators to converge quicker by minimizing variance using different AO and spherical lights as examples shows the weakness of uniform random numbers and provides techniques to generate better distributions variance-driven sampling focus taking more samples where variance is high wayback-archive Evenly distributing points on a sphere presents two techniques that improve on existing Fibonacci lattice methods one version to achieve better packing distribution other to optimize volume and surface area of the convex hull wayback-archive Differentiable Rendering overview of differentiable rendering a technique gaining traction in machine learning the idea is to provide a way to inverse the rendering process so that changes in the output can be traced back through the pipeline to map changes from output state into changes in the input state wayback-archive Moving Mobile Graphics - SIGGRAPH 2018 slides for the Moving Mobile Graphics 2018 course from SIGGRAPH 2018 wayback-archive Journey into rust #2: Compute Shaders Game Of Life implemented using OpenGL compute shaders in Rust wayback-archive Monte Carlo Integration an in-depth explanation WIP document about Monte Carlo integration how it’s able to approximate the shape of the function from taking independent samples how importance sampling helps to converge quicker extend technique to support Multiple Importance Sampling wayback-archive Color in advanced displays: HDR, OLED, AR & VR slides from the SIGGRAPH course characteristics of an idealized display discussion of real hardware considerations tone reproduction, tone characteristics, dynamic range color primaries, gamut, calibration & characterization viewing environment, adaptive displays, observer differences wayback-archive Subsurface Scattering for Foliage (without Raytracing!) video tutorial on how to implement a subsurface scattering approximation with unity wayback-archive Stencil Buffers a tutorial that explains how to use the stencil buffer with Unity shows how to read/write the stencil mask so that only parts of models will be visible on the screen wayback-archive X-Ray Shader Tutorial in Unity a tutorial explains how to create an Overwatch style x-ray effect in Unity implemented using stencil buffer and multiple shader passes wayback-archive V-EZ abstraction layer from AMD on-top of Vulkan has been released as open source implements automatic render barrier management, descriptor pools/sets, memory management, render passes, etc SIGGRAPH 2018 Stuff collection of observations and nuggets of information from different SIGGRAPH 2018 sessions wayback-archive Basic Math for Shaders a visual explanation of foundational linear algebra concepts that are required for shader programming wayback-archive Demoscene session at SIGGRAPH 2018 video of the demoscene session at SIGGRAPH 2018 Clouds in Wande Making an animation in 18 bytes at a time Building World in 64KB Demo Party in Japan wayback-archive Scatter Kernel next part of the series about developing a path tracer using Cuda discussing how to move ray generation code from the CPU to the GPU speedup of 11x is achieved compared to single threaded CPU implementation wayback-archive Some thoughts re Raytracing post-Siggraph 2018 thoughts on open questions in regards to raytracing dynamic, open world type environments wayback-archive A brief postscript on moment-based order-independent transparency brief discussion of difference between Moment Transparency and Moment-Based Order-Independent Transparency approaches small code samples to help to integrate the trigonometric Moment-Based Order-Independent Transparency technique wayback-archive Pathtracing Coherency look at different ray tracing scenarios and how they influence coherency between neighboring rays references to papers that investigate the issue in further details wayback-archive If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  11. Efficient rendering of layered materials slides for the layered real-time shading model discussed in issue 38 using a statistical analysis of light transport in layered structures a visual explanation of the statistical analysis framework presentation of results, comparison against stochastic references and discussion of limitations of the technique wayback-archive High-Performance By-Example Noise using a Histogram-Preserving Blending Operator slides for the technique discussed in issue 45 explanation of problems with linear blending how contrast-preserving blending is able to mitigate some of these problems presents a histogram-preserving blending algorithm that has many use cases besides the introduced procedural texturing technique whenever you blend weighted data: use premultiplied blending data chosen randomly: use histogram-preserving blending wayback-archive Fully Automated Mesh UV UnWrapping video discussing a fully automated UV unwrapping tool explains all steps of the pipeline that tries to find the best projection technique for local parts of the model tool available for licensing NVIDIA Announces Nsight Graphics 2018.4 added pixel history view for D3D12 and added support for support for Vulkan ray trace extension new GPU trace activity view visualizes the GPU utilization in more detail provides a breakdown of wrap level activity, connected to events and performance markers wayback-archive GAME RAY TRACING: STATE-OF-THE-ART AND OPEN PROBLEMS overview of the PICA PICA hybrid raytracing pipeline thought about DirectXRaytracing constraints related to acceleration structures presentation of a texture LOD technique developed with Nvidia preprint available here Pica Pica assets are avaible with with a non-commercial license on sketchfab wayback-archive Not All Blue Noise is Created Equal comparison of 3 techniques to generate blue noise visual quality comparison of three methods to generate blue noise the void and cluster technique produces the best results in the test wayback-archive Integrating clipped spherical harmonics integration of spherical harmonics over spherical polygons using a closed form expression with linear cost shows applications for area lights and approximating shadows from area lights wayback-archive May the Source Be with You: NVIDIA Open Sources Material Definition Language SDK Nvidia open sourced the MDL SDK (Material Definition Language) set of tools that allow materials to be shared between different renderers can generate texturing functions for multiple backends; however the GLSL backend is NOT part of the open source release wayback-archive Introduction to DirectX RayTracing slides and video for the “Introduction to DirectX RayTracing” track from Siggraph 2018 have been released wayback-archive Ray Tracing Minibooks Series released as free pdf the pdf version of the Ray Tracing Minibooks series has been released for free SIGGRAPH 2018 Links growing collection of links to SIGGRAPH 2018 content wayback-archive NVIDIA Reveals Next-Gen Turing GPU Architecture: NVIDIA Doubles-Down on Ray Tracing, GDDR6, & More new GPU architecture from Nvidia dedicated ray tracing hardware volta cores have int8 and int4 support support for variable rate shading wayback-archive siggraph course: path tracing in production 2018 course notes are available wayback-archive Khronos - 2018 SIGGRAPH slides and videos for the Khronos talks from SIGGRAPH 2018 wayback-archive SIGGRAPH 2018 Papers - Machine Learning, Graphics, and Rendering list of author’s favorite papers with a brief summary of the content wayback-archive Fundamentals of color science slides for the Siggraph course about the fundamentals of color science and color management for games and film wayback-archive Introduction to the Vulkan Graphics API slides for the Siggraph course provides an overview of all API interfaces required to render 3D meshes wayback-archive Vulkan GPUinfo database - 1.7 fully vulkan 1.1 compatible support for VK_EXT_conditional_rendering, VK_KHR_8bit_storage If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog Read more
  12. Imperfect Environment Maps using ideas from imperfect shadow map point-cloud rendering to implement reflections generates a point cloud around the track screen space pixels that are close to points of the point cloud transfer their color onto the points the point cloud is then projected onto a sphere around the car and used as an environment map to add reflections on the cars wayback-archive Musings on cross-platform graphics engine architectures – Part 2 breaks down the engine into two separate related concepts, Resource and Command management discusses how to interact with resources introduces the idea of state scopes to prevent state leaking commands are recorded into engine specific command buffers that are later converted into the API specific format wayback-archive High-Performance Graphics 2018 slides for most of the talks have already been published wayback-archive DX12 Ray Tracing Tutorials Nvidia tutorial on how to integrate DirectX raytracing and rasterization so that both rendering paths can be used within the same application how to initialize the API, create DXR acceleration structures how the ray tracing pipeline works, manage shaders, resources, and shader binding tables implementation of the required raytracing shaders to produce identical results with the rasterization pipeline wayback-archive Rendering the Moana Island Scene Part 1: Implementing the Disney BSDF . short description of the different aspects of the Disney BSDF, including source code wayback-archive Screen-space Water Rendering a technique to render screen space water using unity water particles write information into offscreen buffers to accumulate water information these buffers are then resolved to form a continues water surface instead of individual blobs wayback-archive A Multi-Faceted Exploration (Part 3) improves upon the multiple scattering approximation from the previous part of the series the result is a model that only requires a 2D LUT to be pre-calculated wayback-archive Shader Graph Updates and Sample Project walkthrough of two vegetation shaders created with the visual shader editor that was added in Unity 2018.1 wayback-archive Uniform points in sphere and capped cone how to improve the generation of uniform points in a sphere, disk, and a spherically capped cone wayback-archive Clipping Objects with a Plane a tutorial that shows how to clip a mesh in a pixel shader against a plane using unity wayback-archive Confetti Shader Translator - Alpha a web tool that allows the conversion from HLSL Shaders to HLSL 6.2, GLSL 4.5 and Metal 2.1 The other pathtracer 5: Optimizing Triangle-Ray Intersections choosing a different algorithm to optimize triangle-ray intersection tests and vectorizing the calculations wayback-archive Tiled Blue Noise a quick overview of blue noise tiled with various tile sizes from 16x16 to 256x256 wayback-archive A Cross-platform Evaluation of Graphics Shader Compiler Optimization explores source to source optimizations techniques using the LunarGlass framework with GLSL shaders comparison of different optimization techniques and the effects on runtime performance results vary significantly between different shaders and target platforms wayback-archive The State of GPGPU in Rust overview of libraries available to write GPGPU applications using the Rust programming language wayback-archive Lighting the Unlit description of the “unlit” light system being used it allows lights to modify tint, brightness and contrast to enable the 2D characters to match the environment better wayback-archive Metal shaders: blending basics a short explanation and Metal shader code for different blend modes as described in the PDF specification wayback-archive Shader Showcase Saturday #4 overview of different fire effects that are based around animated noise textures wayback-archive Shader Showcase Saturday #5 overview of different rain effects with links to more in-depth articles discussing the showcased effects wayback-archive Microsoft/glTF-SDK Microsoft open sourced their library to read and write GLTF model files Read more
  13. Filament - Physically-based rendering engine great in-depth discussion of the full PBR rendering pipeline, documentation for the Filament engine base BRDF model, extended with support for clear coat layer, anisotropic surfaces, and cloth explanation of lighting units and implementations for directional, point and spotlights providing GLSL code snippets a short overview of the clustered forward shading implementation information about how to validate a PBR implementation wayback-archive An implementation of physically based shading model & image based lighting in various graphics APIs physically based shading model implemented using D3D11, D3D12, Vulkan and OpenGL 4.5 each backend is implemented in a single .h and .cpp file wayback-archive Generating random points in a sphere shows algorithms for generating random points within a sphere contains interactive visualizations that make it easy to see the quality of the distribution wayback-archive Flowmapped-Burn-Shader breakdown of a burning shader implemented in Unreal Engine uses flow maps and world space positioned spheres to influence the fire wayback-archive Non-Scary Shader Intro 2: Vertex Fun part two of the series providing an introduction to vertex shaders shows how to add a custom vertex shader to a basic unity shader, sample textures, pass data from vertex to pixel shader and modify vertex positions wayback-archive 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 last weeks issue a real-time technique for soft shadows wayback-archive Optimize Memory Transfers - Using CUDA profiler to figure out why our renderer is slow shows how to measure Cuda copy performance using the tools contained in the SDK how to speed up the application with the collected performance information wayback-archive Aligning 3D scans the article discusses how to calculate the central axis from a 3D mesh the axis is computed as maximal perpendicular to the area-weighted surface normal of the mesh wayback-archive Vulkan - Multisampling explains how to use MSAA when using Vulkan how to detect the supported sample count, set up the render targets and make the necessary adjustments to the render passes shows how to enable sample shading to further improve quality on the inside of polygons wayback-archive Twitter - Volume rendering thread twitter thread that provides a large number of links to information about volume rendering wayback-archive Vulkan® 1.1.82 - Chunked Specification provides the Vulkan specification in a chunked version the original specification is one large HTML file that causes usability issues wayback-archive Decoding Radeon Vulkan versions AMD provides a XML file that offers the possibility to map from external driver version to the contained Vulkan driver version wayback-archive 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 wayback-archive Compilation of 100+ 3D graphics academic papers collection of many 3D graphics research papers for a large number of different topics (sorted by topic) wayback-archive Think Silicon® releases GLOVE™, an OpenGL ES over Vulkan middleware as open source OpenGL ES implementation using Vulkan licensed as LGPL v3 wayback-archive Read more
  14. The Elusive Frame Timing explanation of frame stuttering provides videos and frame by frame comparisons of what is causing the stutter explains how the discrepancy between measured time and actual present time causes the studdering issue current state of graphics API ecosystem in solving this problem wayback-archive Quality hashes collection WebGL2 shadertoy implementations of multiple noise types the comments describe improvements and possible optimizations to the used noise types 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 from dynamic triangle meshes and the rendering of multiple depth maps simultaneously proposes two different implementations performance and quality comparison against PCSS (percentage closer soft shadows) and Multi-view rasterization (MVR) wayback-archive Normals and the Inverse Transpose, Part 3: Grassmann On Duals part 3 of the series about Grassmann for computer graphics combines the concepts of bi-vectors / tri-vectors with dual vectors explaining use cases wayback-archive Even more compute shaders explains how GPUs are able to execute multiple execution streams to hide memory latency how the different workloads of CPU and GPU lead to differences in the design of caches wayback-archive PIX 1807.19 – Shader Table Viewer added support for visualizing the content of DirectX Raytracing shader tables able to detect invalid data in the table and warn about it wayback-archive Geometry Shader Adventures, Mesh Triangle to Particle explanation of a geometry shader in Unity that converts a triangle mesh into camera facing quad particles wayback-archive metal shaders: luminance explains how to calculate luminance and a very brief overview of the human vision wayback-archive metal shaders: color adjustments look at image shaders that modify brightness, contrast, exposure, gamma or saturation using Metal wayback-archive DF Retro H2O! Water Rendering: Wave Race 64, Quake, Duke Nukem 3D + Many More! overview of water rendering starting from the early 90s to the early 2000s Read more
  15. Disney Animation Data Sets the history behind the release of the Disney datasets of large-scale scenes comparison of the scene rendered using Disney’s renderer and PBRT 3 wayback-archive A High-Performance Software Graphics Pipeline Architecture for the GPU paper discussing the software implementation of the rasterization pipeline using compute shaders using a dynamic approach that adjusts to the workload dynamically comparison within environments taken from games to evaluate the pipeline overhead showcase of what kind of effects are possible with a software approach custom primitive rendering programmable blending adaptive supersampling in-depth performance comparison against hardware and other software approaches wayback-archive Followup to Atmospheric Scattering—Part 1 follow up series of 2012’s GPU Pro 3 model dynamic, real-time atmospheric model without pre-calculations explains aerial perspective and the Chapman approximation to optical depth wayback-archive Visualizing 2D Vector Fields showcase different ways to visualize a 2d flow field presentation of an algorithm that allows the creation of loopable animations from vector fields wayback-archive TL;DR of the paper 'Conservative Z-Prepass for Frustum-Traced Irregular Z-Buffers' summary of “Conservative Z-Prepass for Frustum-Traced Irregular Z-Buffers” paper explanation of irregular z-buffer and conservative shadow maps and how they are combined wayback-archive Sampling Anisotropic Microfacet BRDF mathematical derivations of importance sampling for GGX, Beckmann, and Blinn-Phong wayback-archive Writing a Modern Metal App from Scratch: Part 2 part 2 of the Metal tutorial adding support for depth buffers, some simple lighting with textures extending the application to support multiple lights, objects, and materials with some basic animations wayback-archive Vulkan input attachments and sub passes explanation of Vulkan render passes example how to create Render passes manage shader bindings for input attachments and how to use them from within the GPU shader wayback-archive Musings on cross-platform graphics engine architectures – Part 1 start of a series about graphics engine architecture core design goals and pillars for the author’s graphics engine embrace concepts introduced in modern graphics APIs make job-based multi-threaded execution a first class citizen define a clear, small API, but be open towards extension wayback-archive Revisiting The Vertex Cache: Understanding and Optimizing Vertex Processing on the modern GPU a new vertex cache optimization algorithm that is able to improve cache usage on NVidia hardware by taking advantage of vertex batch sizes wayback-archive TL;DR of the paper 'Revisiting The Vertex Cache: Understanding and Optimizing Vertex Processing on the modern GPU' summary of the “Revisiting The Vertex Cache: Understanding and Optimizing Vertex Processing on the modern GPU” paper wayback-archive Shader Showcase Saturday #2 shader showcase of different waterfall effects wayback-archive metal shaders: color inversion explains what color inversion is and how to implement it using metal wayback-archive Multipass Shaders (& inverted Hull outlines) tutorial on how to use multi-pass shaders in unity to implement an outline drawing effect first pass object is drawn like usual in the second pass drawn with front face culling and slightly scaled up to define the outline wayback-archive Read more
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!