Jump to content
  • Advertisement
  • entries
    63
  • comments
    0
  • views
    7820

Entries in this blog

 

Graphics Programming weekly - Issue 63 — November 18, 2018

Modern graphics abstraction and real-time ray tracing overview of architecture multiple render backends are supported at the same time all GPU resources are referred to by a handle, resources can exist on multiple GPUs overview of the high-level command system that is recorded and translated into native API command buffers render graph system graph construction and execution how to deal with multiple GPUs virtual GPU system allows emulation of a multi GPU setup using a single GPU proxy backend routes rendering calls to a remote machine for execution a brief look at machine learning in a render graph architecture overview of the asset pipeline overview of hybrid rendering pipeline and how transparent shadows have been implemented using DirectX Raytracing discussing open problems with ray tracing pptx archive wayback-archive Web High Level Shading Language a new shading language, designed for use with WebGPU discusses the constraints of targeting the web, and the ability to convert to Metal, HLSL, and SPIR-V SPIR-V limitations also limit the expressiveness of WHLSL memory safety for arrays, getter and setter support does not support a preprocessor but instead uses a two-pass compilation model with specialization constants bindless binding model is not supported wayback-archive 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 causes and how a rotated grid improves the edges of glyphs that contain straight lines explains how to sample the grid efficiently by splitting the rotation into one horizontal and one vertical skew able to optimize the sampling by precalculating lookup tables wayback-archive Microsoft's New Open-Source Project Is Shader Conductor For Cross-Compiling HLSL new open source library from Microsoft that combines the DirectXShaderCompiler and SPIRV-Cross to convert HLSL shaders into OpenGL/Metal/SPIR-V or HLSL compatible with D3D11 wayback-archive A simple method to construct isotropic quasirandom blue noise point sequences presents an approach to generate a quasirandom blue noise point sequence shows the mathematical foundation, distribution analysis and comparison with other techniques python code is provided to help with the understanding of the technique shadertoy wayback-archive Our Machinery Episode 3: Cross-Platform Graphics podcast episode discusses how to design a cross-platform API, problems, and considerations engine design is aimed at modern APIs, supporting older APIs is not a concern for “Our Machinery” wayback-archive 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 step provides HLSL source code that produces the same assembly wayback-archive 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 presents how to identify physical adapters between Vulkan and DXGI to deal with multi-GPU systems wayback-archive Vulkan with DXGI - experiment results experiments with using DXGI for memory reporting when using Vulkan results are presented for the system using one AMD and one NVIDIA GPU memory management behavior seems to be different between the vendors DXGI appears to be able to report sensible application local memory usage information wayback-archive 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 and schedule presents at specified times the post presents results from experimenting with VK_GOOGLE_display_timing on Android and Mesa (X11) list of issues encountered and possible points of improvement wayback-archive How To: Data Lookups Via Raytracing explains how ray-tracing could be used for arbitrary data-lookup in 2D and 3D can handle more data points where the signal changes more rapidly a texture has a fixed resolution and cannot adjust to varying density needs wayback-archive niagara: Depth pyramid for occlusion shows how to generate a depth pyramid for Vulkan takes the depth buffer and produces a conservative mipmap chain preparation for GPU occlusion culling in the next episode niagara: Occlusion culling implementation of GPU occlusion culling into the mesh-shader and classical rendering pipeline Graphics Programming - Resources for Beginners list of resources for beginners that are looking to get started with graphics programming wayback-archive Task list for VK_EXT_scalar_block_layout new Vulkan extension that allows usage of the C++ memory layout in Vulkan constant and structured buffers this relaxes the alignment requirements wayback-archive Recovering the Scale, Rotation and Translation Matrices from the Model Matrix presents how to recover the scale, rotation, and position from a model matrix rotation is retrieved as a rotation matrix wayback-archive CppCon 2018: Valentin Galea “Rapid Prototyping of Graphics Shaders in Modern C++” a presentation about the development and design of a C++ library implementation that allows GLSL shaders to run on the CPU If you are enjoying the series and getting value from it, please consider supporting this blog. Support this blog
Read more

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 62 — November 11, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 61 — November 4, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 60 — October 28, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 59 — October 21, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 58 — October 14, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 57 — October 7, 2018

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 1.1.85.0 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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 56 — September 30, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 55 — September 23, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 54 — September 2, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 53 — August 26, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 52 — August 19, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 51 — August 12, 2018

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

jendrikillner

jendrikillner

 

Graphics Programming weekly - Issue 50 — August 5, 2018

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
 

Graphics Programming weekly - Issue 49 — July 29, 2018

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
 

Graphics Programming weekly - Issue 48 — July 22, 2018

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
 

Graphics Programming weekly - Issue 47 — July 15, 2018

An introduction to shader derivative functions explanation of partial derivates in pixels shader, (ddx, ddy in HLSL or dFdx, dFdy in OpenGL) the rate of change for variables in a 2x2 pixel grid how they are calculated, how they can be used to calculate face normals from world space positions how branches interact with derivative calculations wayback-archive More compute shaders explanation of SIMD execution details for GCN discussing latency, throughput, and scheduling introduction of instructions that allow multiple SIMD lanes to exchange information extra requirements for pixel shaders wayback-archive Rotating a vector using integer math a technique to rotate vectors on the GPU using only integer math aims to take advantage of packed operations and scalar integer operations wayback-archive Gathering Feedback: Open Problems in Real-Time Raytracing Colin Barré-Brisebois is looking for feedback and open problems in real time raytracing this will influence the HPG 2018 keynote wayback-archive bezier bounding box how to calculate the bounding box for quadratic and cubic Bezier splines analytically wayback-archive The Team Color Problem changing the color parts of a character at runtime using a mask texture detailed visual explanation of why this works for fixed colors but causes an issue when giving the option to blend between two colors using premultiplied colors removes the artifacts wayback-archive Blending an HDR color into a U8 Buffer explanation of how blending HDR values into an SDR render target behaves regarding clipping into the [0,1] range shows how using non-premultiplied HDR values results in incorrect results and how this can be fixed by the use of premultiplied alpha colors wayback-archive 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 deals with loading models, handling vertex data, shaders, constants and drawing wayback-archive Shader Showcase Saturday #1 showcase of small rendering demos that showcase volumetric rendering effects wayback-archive Dark and Stormy explanation of dark and stormy, cloudy skybox shader for unity source code and example assets are available wayback-archive QuadriFlow: A Scalable and Robust Method for Quadrangulation a technique to generate quadrilateral meshes from triangulated meshes won the Best Paper Award at Symposium on Geometry Processing 2018 source code available wayback-archive Low Level Graphics Library (LLGL) a library that aims to provide a thin abstraction layer on top of OpenGL, D3D11, D3D12, Vulkan, and Metal Rudimentary temporal anti-aliasing solution GLSL implementation as a starting point for a temporal antialiasing solution wayback-archive Real-Time Rendering, 4th Edition Bibliography bibliography of the Real-Time Rendering 4th edition 1978 references wayback-archive
Read more
 

Graphics Programming weekly - Issue 46 — July 8, 2018

Progressive Sampling Strategies for Disk Light Sources comparison of combinations of six different sampling strategies for disk area light sources and 9 sample sequences testing is done for wholly and partially illuminated regions the best result could be achieved with the polar4 strategy introduced in this paper with well-stratified samples wayback-archive Progressive Multi-Jittered Sample Sequences introduction of new strategies to generate progressive(hierarchical) 2D sample point sequences can be stopped at any point in the sequence and samples will still be well distributed comparison against existing techniques, using many different distribution functions and shapes wayback-archive HSV and HSL (colorpsaces XI) explanation and derivation of the HSV and HSL color spaces how to convert the color spaces to and from RGB colors wayback-archive Hybrid raytraced shadows and reflections implementation of a hybrid approach that mixes rasterization for first hit and raytracing for secondary rays tracing against polygons using compute shaders directly (no raytracing API) how to create a BVH structure and traverse it details about how to raytrace for shadows and reflections look at the performance, mainly memory bound wayback-archive Breaking down barriers – part 4: gpu preemption provides an overview of GPU preemption strategies and how these affect application responsiveness and latency wayback-archive Pathtraced Depth of Field & Bokeh explains the physical properties of cameras, starting with a pinhole camera model shows the effect of changing focal length, aperture radius and how to implement this into a raytracer extending the concepts into a lens based camera system wayback-archive Rules of optimization explanation of performance culture, a working culture that treats performance as a core feature designed from the beginning and it’s everyone responsibility to uphold it wayback-archive Porting your engine to Vulkan or DX12 video and slides from a talk that explains lessons learned from porting an AAA engine to Vulkan recommendations for memory, descriptors, command buffers and barrier management a short overview of frame graph architecture to achieve better barrier usage wayback-archive DD2018: Tomasz Stachowiak - Stochastic all the things: raytracing in hybrid real-time rendering overview of the hybrid real-time rendering pipeline developed for PICA PICA demo layered material model transparency translucency shadows an in-depth look at the reflection system and global illumination system Introduction to compute shaders how GPUs evolved from fixed function hardware to the uniform architecture used today overview of concepts required to understand the programming model how GPUs are able to hide memory latency to achieve higher throughput wayback-archive TL;DR of the paper 'High-Performance Procedural Noise using a Histogram-Preserving Blending Operator' summary of the paper “High-Performance Procedural Noise using a Histogram-Preserving Blending Operator” that was discussed in issue 45 wayback-archive How to start learning graphics programming? steps that the author recommends programmers follow that are interested in getting started in graphics programming from shadertoy (for instant visual feedback) to game engines to more low-level aspects of the implementation wayback-archive DD2018: Sebastian Aaltonen - GPU based clay simulation and ray tracing tech in Claybook overview of the SDF storage system how the world space SDF is generated from a list of brushes and how it is modified at runtime how to raytrace against the distance field efficiently soft shadows and ambient occlusion improvements SDF → mesh conversion for moving particles px_render.h rationale overview of design decisions of single header low-level rendering API comparison against bgfx and sokol_gfx wayback-archive Vulkan layers don't work? Look at registry windows registry contains entries for Explicit Layers (all layers that can be loaded by a process) and Implicit Layers (all layers that will be loaded automatically for every process) sometimes these values will become corrupted wayback-archive
Read more
 

Graphics Programming weekly - Issue 45 — July 1, 2018

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 a grass, snow) in a pixel shader only for example tillable terrain textures cheap to evaluate; 0.29ms for a fullscreen quad the approach is to partition the output space into a triangle grid and to pick three random patches from the input texture to blend to create the output patch this is made possible through the variance preserving blending operation, and this can also be used to improve triplanar mapping wayback-archive Spectral Remapping for Image Downscaling technique for downsampling images that preserves high-frequency information from the original image instead of discarding high-frequency information it remaps the signal into a form that can be represented in the downsampled image wayback-archive Stratified Sampling of Projected Spherical Caps a technique to improve importance sampling for spherical light sources by projecting the visible spherical cap onto a 2D plane, and taking uniform samples within this plane yields noise-free direct illumination for constant illumination with no occluders wayback-archive 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 improves the results
wayback-archive High-Performance Graphics 2018 - Program program for the High-Performance Graphics 2018 in Vancouver has been published wayback-archive Deferred Adaptive Compute Shading technique changes shading rate adaptively based on the local content of the image partitions the framebuffer into subdivision levels; uses these to estimate the variance between neighboring pixels to decide if new shading information needs to be calculated or if the shading result can be estimated from neighboring pixels wayback-archive Cube-to-sphere projections for procedural texturing and beyond overview of area-preserving approaches of cube to sphere mapping summarizing ability to preserve area and GPU performance how to generalize 2D grid-based poisson-disc sampling to the sphere provides shadertoy implementations of the presented techniques wayback-archive 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 wayback-archive PIX 1806.20 – GPU Occupancy for AMD GPUs Pix now also support GPU occupancy visualization for all shader types on AMD GPUs wayback-archive Materials for Polygons on Terrain and the Evils of Inverse Trigonometry polygons on terrain implemented as image-space decals how to apply them when they span a large area on the surface of the earth effects of implementation inaccuracies of inverse trigonometric functions between CPU and GPU wayback-archive Understanding GPU context rolls explains what a context on AMD hardware is and how the driver manages these the Radeon GPU Profiler has a tool to analyze when context rolls are causing a performance issue wayback-archive Gradient Estimation for Real-Time Adaptive Temporal Filtering a technique that adjusts the temporal accumulation factor dynamically per pixel and frame done by calculating per-pixel temporal gradients. These are reconstructed from sparse information that captures the change of luminance between the last and current frame wayback-archive Compiling DirectXShaderCompiler on Linux/macOS Microsoft DirectX Shader Compiler is now also supported on Linux and macOS there is a docker image available: https://github.com/gwihlidal/docker-dxc wayback-archive Veldrid Support for SPIR-V Shaders low-level C# graphics library now supports SPIR-V shader for all supported backends exposes specialization constants on the API level and emulates them at translation time for backends that don’t support them wayback-archive
Read more
 

Graphics Programming weekly - Issue 44 — June 24, 2018

Breaking down barriers – part 3: multiple command processors discusses problems with synchronization between unrelated work when using a single command queue showcases how two command queues can achieve better overall utilization at the cost of longer latency wayback-archive Simball description explanation of the simball environment that has been initially designed for the Maxwell Renderer descriptions of the different object features, what they are designed to provide tests for and how it’s supposed to be used Zelda – The Bling-Bling Offset shows how Zelda uses an FX in world space to make objects visible in high grass by adjusting the position of the effect based on the environment fix clipping with the object by offsetting the FX towards the camera wayback-archive Blackscreen checklist for OpenGL and D3D twitter thread with a checklist of common problems that can cause objects not be rendered in OpenGL / D3D wayback-archive Adaptive Temporal Antialiasing the technique that mixes rasterization and temporal antialiasing to only ray trace pixels where a classification algorithm determines that TAA will not produce good results wayback-archive Combining Analytic Direct Illumination and Stochastic Shadows C++ source code and prebuild demo application are released wayback-archive Texture-space Decals The decals are projected from world space onto the mesh UV and rendered into separate per-object decal textures wayback-archive The other Pathtracer 4: Optimizing AABB-Ray intersection optimizations to raytracer using SIMD extending AABB tests to deal with various edge cases wayback-archive ACES 1.1 now available a new set of SDR ODT (Output Device Transforms) first Output Transforms that combine the RRT (Reference Rendering Transform) and ODT (Output Device Transforms) into a single transform wayback-archive Optimising path tracing: the last 10% shows how the runtime/compile time selection feature of the Rust programming language is used to select different SSE intrinsics based on the available hardware wayback-archive roblox graphics APIs 2018 overview of rendering API support for the user of Roblox Metal reaches above 60% on MacOS and D3D11 77% on Windows on Android, Vulkan is available on 20% of devices wayback-archive lunarg releases new vulkan 1.1.77 sdk new sdk contains VK_KHR_get_display_properties2 and VK_KHR_draw_indirect_count extensions wayback-archive
Read more
 

Graphics Programming weekly - Issue 43 — June 17, 2018

Using Compute Post-Processing in Vulkan on Mali how to use two Vulkan queues to enable optimal scheduling for compute-shader based post-processing discussion how fragment → compute can introduce bubbles on the hardware uses two software queues with semaphore synchronization to overlap early work in the frame of the following frame with the post-processing work of the previous frame wayback-archive Monte Carlo Integration Explanation in 1D explanation of to use Monte Carlo integration to calculate the area under a curve extending the system to deal with non-uniform random numbers distributions convergence can be faster when using a distribution that is a closer match to the signal that is being sampled wayback-archive PIX 1806.11 – Fence signals and waits visualization, major UI streamlining, new Edit and Continue experience, and more timing capture now visualizes fence signal and wait fences can be named shader edit and continue workflow improvements shader resource tracking for DXIL shader wayback-archive Shader Playground updates shader playground added support for slang a shader language that extends HLSL to make it more modular and extensible ability to shows the control flow graph in GraphViz ‘dot’ form for SPIRV Lookup table based real-time PVRTC encoding using lookup tables to precompute the endpoints better compression results different number of lookup tables allow tradeoffs in performance, quality and memory usage wayback-archive Microsoft - GDC 2018 talks from Microsoft at GDC are online including DirectX Raytracing and Optimizing and debugging your DirectX-12 game Texturing in a 64kB intro discusses the history and design of their in-house procedural texture generation tool wayback-archive Book of the Dead: Photogrammetry Assets, Trees, VFX discussion of the photogrammetry workflow camera used to capture, tools to generate the mesh and normals using unity Unity’s DeLighting tool to remove shadows are even present on an overcast day Tree assets are created with a mix of scans, 3ds max plugins, and quixel megascans assets a fluid solver is used to calculate the flow map for the wind, shape exploration and VFX generation wayback-archive PostFX v2 – Amazing visuals, upgraded overview of all the post effects that can be found in PostFX v2 code is on github wayback-archive Simple GPU Path Tracer explains the basic of path tracing used in his D3D12 path tracer wayback-archive Cross-platform OpenGL alternatives discusses engines, frameworks, abstraction layers that support metal wayback-archive Vulkan for Qt on macOS QT adds support for vulkan on macOS through MolenVK wayback-archive
Read more
 

Graphics Programming weekly - Issue 42 — June 10, 2018

Real-World Measurements for Call of Duty: Advanced Warfare this in-depth document (26 pages) covers how real-world measurement is used to achieve correct lighting in call of duty explanation of camera concepts getting relative EV differences between light and shadowed areas is more important than having absolute correct values how having consistent measurements between the real world and in-game allowed numerous issues to be discovered and fixed the exposure handling required for the sizeable dynamic range of the scene how to capture accurate HDR photographs, albedo textures, and specular gloss wayback-archive HDR in Call of Duty 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 wayback-archive A Multi-Faceted Exploration (Part 2) look at solution developed by Imageworks compensates for the energy loss in a single bounce BRDF model improvements to the model wayback-archive Human-friendly classification of Vulkan resources proposal of how to group vulkan resources by usage type designed for coloring in the VulkanMemoryAllocator wayback-archive 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 developers should be using Metal instead wayback-archive Metal for Game Developers how to generate command buffers in parallel on the CPU metal can analyze data dependencies to insert GPU parallelization automatically explicit control is supported but requires explicit opt-in how to build a GPU driven rendering pipeline using indirect command buffers and argument buffers look at image blocks, programmable blending, tile shading, persistent thread group memory, custom multi-sample color resolve lessons learned from bringing Fortnite: Battle Royale to iOS wayback-archive How To become an advanced graphics programmer twitter thread with advice how to learn more advanced graphics programming topics wayback-archive Polygons a tutorial that explains how to clip a polygon based on a list of lines in a pixel shader wayback-archive Sticking a thin lens in a ray tracer derivation of a ray function that implements the effects of a thin lens on rays wayback-archive 3d file formats, last mile vs. interchange looks at different file formats and discusses the difference between formats aimed at the interchange of information or consumption only formats covered: gltf, fbx, alembic, USD, a brief look at application and engine support wayback-archive 2018 Vulkanised video presentations from the Vulkanised conference Multiview rendering in Vulkan using VK_KHR_multiview a sample that shows how to use the VK_KHR_multiview Vulkan extension wayback-archive
Read more
 

Graphics Programming weekly - Issue 41 — June 3, 2018

The Machinery Shader System (part 3) shader authors can define variations of shaders with a number of systems each system can inject code/resources/constants into the shader a material allows specifications of which shaders belong together, which systems they use and allows to insert command at the correct time in the Frame all of the resulting shaders get a shared resource binder and constant buffer to reduce wayback-archive Adding texturing to a glsl path tracer explanations how ray tracing shaders in OpenGL can access the necessary textures for all objects in the world using GL_ARB_bindless_texture wayback-archive Pathtracer 13: GPU threadgroup memory is useful! moving the scene information into group shared memory to speed up the ray tracing code a lot problems on metal, slower unless passing data by value instead of by const reference wayback-archive Pathtracer 14: iOS look at the iOS implementation with an overview of performance tools for CPU and GPU wayback-archive Hybrid Multi-Frustum Logarithmic Depth Buffer now using Logarithmic depth buffer when available writes custom depth in a pixel shader, this does disable early depth optimizations but still a performance win for their use-case wayback-archive Witcher tricks - a bit about rendering the witcher 3 look at the implementation of Witcher 3 rendering from an outside perspective using RenderDoc breakdown of rendering Frame structure how normals are stored in the g-buffer explanation of a number of techniques from the d3d disassembly sun rendering blinking stars eye adaptation tonemapping vignette Basis universal GPU texture format examples discussion of tradeoffs for the basis file format comparison of different images formats transcoded from the same source format wayback-archive Denoising with Kernel Prediction and Asymmetric Loss Functions extending previous work in CNN(Convolutional neural network) based denoising using a modular architecture that improves temporal stability and detail preservation wayback-archive Optimising path tracing with SIMD how to optimize a Rust path tracer using SSE4.1 wayback-archive On Games’ Power Consumption and phones the longer the CPU/GPU can idle, the less power is needed optimizing a CPU bound game might cause more frames to be rendered (hitting 60 fps instead of 30). causing less GPU idle time and increasing power consumption kernel heuristics might trigger higher frequency mode which increases battery usage significantly wayback-archive Texture Distortion Faking Liquid Tutorial about the implementation of water surface movement of using a flow map in unity how to deal with deformation of normals using derivative maps wayback-archive A Trio of New Nsight Tools That Empower Developers to Fully Optimize their CPU and GPU Performance NVIDIA Nsight Systems visualizes system-wide application interactions across CPU and GPU Nsight Volta, Vulkan 1.1 and Cuda 9.2, are supported user configurable memory view wayback-archive Nsight Systems Exposes New GPU Optimization Opportunities -how to investigate GPU starvation and detect CPU/GPU synchronizations and overview of other tools wayback-archive
Read more
 

Graphics Programming weekly - Issue 40 — May 27, 2018

INSIDE shipping on iOS many optimization lessons learned for mobile how to deal with shader preloading discussion of error detection in automated image comparison tests increased game brightness to reduce the use of display backlights to save battery and reduce heat using raytracing to remove aliasing in special cases improvements to blue noise algorithm wayback-archive GPU Driven rendering experiments at the Digital Dragons conference discussions of problems with old occlusion culling systems renders occluders in a pre-pass, uses the depth information to cull instances how to implement culling against the depth buffer, remove culled instance from the stream stream compaction implementation extend the system to handle LOD, materials and manual vertex fetching performance results on Nvidia and Intel wayback-archive SIGNED DISTANCE FIELDS IN UNITY overview of how to generate a SDF in unity per object SDF at build time global SDF aggregation at runtime wayback-archive Workshop: Shaders for Artists - Part 2 introduction to shaders workshop in Montreal focused on the node-based shader pipeline of Unreal 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 OpenGL persistent memory (GL_ARB_buffer_storage) client arrays vertex buffer object (VBO) wayback-archive Scalable GPU Fluid Simulation overview of SPH (Smooth Particle Hydrodynamics) how it’s implemented in a compute shader explanation of a sorted grid acceleration structure wayback-archive Fractal Raytracing: The Mathy Parts how the fractal raytracer was implemented on the GPU evaluating the fractal, ray marching and photon simulation wayback-archive Art Design Deep Dive: Rendering the player as a form of pure energy in Recompile discussion of a unique art style rendering technique the character is represented from axis aligned voxels voxels are created/destroyed on a quantized world space grid as the character moves through the world wayback-archive GPU Path Tracing in Unity – Part 2 adds supports for a basic material system with lambert diffuse + phong specular explanation of importance sampling wayback-archive Advice for beginners, who are just getting started in Computer Graphics list of resource for beginners into graphics programming wayback-archive Stochastic all the things: Raytracing in hybrid real-time rendering implementation details for reflections, translucency, transparency, shadows global illumination uses surfels with world space accumulation wayback-archive How I got started with shaders (Non-Scary Shader Intro) explanations of how to get started with shader programming with unity takes the unity toon shader as the starting point to explain concepts and provide a gentle introduction into making modifications to it wayback-archive The Forge: Release 1.10 adds support for GPU tracking system that allows to enable/disable features based on the GPU used Radeon GPU Profiler 1.2 now includes present events in the system activity view explanations for why the driver had to insert barriers wayback-archive
Read more
 

Graphics Programming weekly - Issue 39 — May 20, 2018

Kernel Foveated Rendering implements foveated rendering through usage of log-polar transformation gbuffer is written as normal, attributes transformed into sub-resolution textures using a log-polar transformation shading is done in log-polar space before the results are transformed back into Cartesian space
wayback-archive Checkerboard rendering, rotated anti-aliasing and grid frequencies Intro to sampling theory and how different sampling patterns influence the aliasing that can be observed explanation of why the default D3D11 MSAA has been chosen
wayback-archive My take on shaders: Spherical mask dissolve description of a shader effect that dissolves triangles outside of a spherical effect range
wayback-archive Game Math: Swing-Twist Interpolation (…Sterp?) slerp between two orientations takes the shortest path on a 4D hypersphere author wants the shortest arc in 3D instead decomposes rotation into swing and twist operations these are interpolated independently and concatenated to form the final rotation
wayback-archive A Multi-Faceted Exploration (Part 1) start of series that will look at lack of multi scattering in common analytical BSDFs and solution only modelling single scattering causes significant energy loss on rough surfaces post shows visual example that up to 60% of energy can be lost
wayback-archive Multiple-Scattering BRDF derivation of the multi-scattering GGX BRDF provides source code and precomputed lookup tables wayback-archive Stripping scriptable shader variants explains what shader variations are how to compute the amount of variations created for a shader how unity decides what variations to include Unity 2018.2 beta adds the possibility to control shader variation compilation from a C# script
wayback-archive Compressonator V3.0 Release Brings Powerful New 3D Model Features new image diff option allows visualization of pixel difference between compressed / uncompressed textures adds model optimizations (vertex cache, overdraw, vertex prefetch optimizations) draco compression support
wayback-archive Simple and efficient Vulkan loading with flextGL tool that allows to only include vulkan functionality that you need comparison of header sizes and influence on compile time, startup time
wayback-archive Normals and the Inverse Transpose, Part 2: Dual Spaces introduction into vectors as functions and dual space how to transform dual vectors wayback-archive 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 D3D11, Metal, OpenGL and vulkan wayback-archive Introducing Shader Playground website that allows compilation of shaders with a multitude of shader compilers and inspect the available outputs possibility to chain compilers together
wayback-archive Vulkan Debug Utilities tutorial how to use the VK_EXT_debug_utils extensions combines old debug extensions into a unified one and adds more possibilities allows more details to be reported from the validation layer and tools that support the extension
wayback-archive GPU-Centered Font Rendering Directly from Glyph Outlines technical details about the font rendering algorithm used in slug
wayback-archive Game Math: Deriving the Slerp Formula presents one method to derive the slerp formula for quaternions
wayback-archive Programmability of Graphics Pipelines discusses issues with composability, how complexity poses a problem of sharing research results list of frameworks for research how the scriptable render pipeline of unity allows more flexibility and still hides most of the complexity
wayback-archive Texture Arrays in Unity discusses problems with using a texture atlas set of scripts to help with the creation, management and usage of texture arrays in unity
wayback-archive Alpha Distribution technique that helps to reduce problems of disappearing geometry for alpha tested geometry no runtime changes required, only changes the way mips are generated
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!