Fast way to render lots of spheres
Sebastian Aaltonen presents a fast method of rendering debug spheres (N*2 triangles, where N is the number of spheres you have).
Full article at: https://gist.github.com/sebbbi/a599d7896aa3ad36642145d54459f32b
Efficient Data Structures for Cache Architectures
How to code high-performance string data structures and data management algorithms by Dr. Nikolas Askitis.
Full article at: https://github.com/naskitis/Efficient-Data-Structures-for-Cache-Architectures
How C++ Debuggers work - Simon Brand - Meeting C++ 2017
Debuggers are one of the most important tools in the belt of any developer, but they are often seen as a magic black box.
This is compounded by the lack of available literature, especially when compared to other toolchain components like compilers.
This talk aims to demystify debuggers by showing how the utilities you use every day actually work.
Full video at: https://www.youtube.com/watch?v=Q3Rm95Mk03c
Determining Triangle Geometry in Fragment Shaders
When doing GPU programming, it’s sometimes useful to determine the positions of the vertices of the current triangle primitive in a fragment shader.
It turns out, though, that there is a relatively straightforward solution without any extra shader stages using the standard derivative functions dFdx
and dFdy
.
Full article at: https://pcwalton.github.io/2018/02/14/determining-triangle-geometry-in-fragment-shaders.html
Bicubic Filtering in Fewer Taps
A more detailed explanation of GPU Gems 2, chapter 20, Fast Third-Order Texture Filtering.
Full article at: https://vec3.ca/bicubic-filtering-in-fewer-taps/
Tutorial of Ray Casting, Ray Tracing and Ray Marching
As GPU power is becoming significantly better than CPU, ray casting / tracing and ray marching is widely used in 4k intros and demoscenes to create 3D (interactive) graphics.
Full article at: https://blog.ruofeidu.com/tutorial-of-ray-casting-ray-tracing-and-ray-marching/
Experimentation framework for probe-based lighting
Experimentation framework for probe-based lighting: https://github.com/kayru/Probulator
Material Studies
A study on different materials and the parameters required to obtain them using Houdini.
Metals: https://www.behance.net/gallery/35636521/Material-Studies-Metals
Direct3D 12.0 quick reference guide
Guide source and pdf: https://github.com/alessiot89/D3D12QuickRef/
Optimizing the Graphics Pipeline with Compute
A presentation on how the compute power of the console and PC GPUs can be used to improve the triangle throughput beyond the limits of the fixed function hardware: https://www.frostbite.com/2016/03/optimizing-the-graphics-pipeline-with-compute/
Bindless texturing for deferred rendering and decals
Using bindless resources in D3D12 and Vulkan instead of the slot based system: https://mynameismjp.wordpress.com/2016/03/25/bindless-texturing-for-deferred-rendering-and-decals/
floats, bits, and constant expressions
Access the bits that represent an IEEE754 single precision float in a C++14 constant expression: https://brnz.org/hbr/?p=1518
Deep Dive: How VXAO, Frustum Tracing, & Fluid Combustibles Work
NVidia’s GameWorks team is announcing five new technologies :
* Volumetric Lighting algorithm update
* Voxel-Accelerated Ambient Occlusion (VXAO)
* High-Fidelity Frustum-Traced Shadows (HFTS)
* Flow (combustible fluid, fire, smoke, dynamic grid simulator, and rendering in Dx11/12)
* GPU Rigid Body tech
This article introduces the new technologies and explains how they work at a low-level: https://www.gamersnexus.net/guides/2355-deep-dive-how-vxao-frustum-tracing-and-flow-work
Real Time Point Based Global Illumination by Anatole Duprat
Real Time Point Based Global Illumination Article: https://www.aduprat.com/portfolio/?page=articles/PBGI
Optimizing the Graphics Pipeline with Compute
Limbo developer Playdead has released the source code (via GitHub) for the temporal reprojection anti-aliasing solution used in its upcoming game Inside. Full article at: https://www.gamasutra.com/view/news/268722/Limbo_dev_opensources_its_Unity_5_antialiasing_tech.php
Developing The Northlight Engine
Lessons learned developing the Northlight Engine: http://wili.cc/research/northlight_dx12/
Preparing for Real HDR
An interesting article from NVIDIA for taking advantage of the new HDR Displays: https://developer.nvidia.com/preparing-real-hdr
The Transvoxel Algorithm
The Transvoxel Algorithm is a method for seamlessly stitching together neighboring triangle meshes generated from voxel data at differing resolutions so that level of detail (LOD) can be used with large voxel-based datasets such as volumetric terrain in next-generation video games.
Bhaskara I's sine approximation formula
Bhaskara I’s sine approximation formula is a rational expression in one variable for the computation of the approximate values of the trigonometric sines.
https://en.wikipedia.org/wiki/Bhaskara_I’s_sine_approximation_formula
Normalized Vector Interpolation
A small description on interpolating normal vectors using Slerp/lerp/nlerp.
https://blog.demofox.org/2016/02/19/normalized-vector-interpolation-tldr/
PNG + sRGB + cutout/decal AA = problematic
A good blog post on the problems of “PNG + sRGB + cutout/decal AA” in realtime rendering with premultipled alpha.
https://www.realtimerendering.com/blog/png-srgb-cutoutdecal-aa-problematic/
Vulkan is here
Khronos launched the Vulkan 1.0 specification on February 16th, 2016 and Khronos members released Vulkan drivers and SDKs on the same day.
- “Khronos Vulkan”: https://www.khronos.org/vulkan/
- “NVidia Vulkan drivers”: https://developer.nvidia.com/vulkan-driver
- “Vulkan @ AMD GpuOpen”: https://gpuopen.com/gaming-product/vulkan/
- “Open-Source Vulkan drivers for Intel hardware”: https://01.org/linuxgraphics/blogs/jekstrand/2016/open-source-vulkan-drivers-intel-hardware
- “Experience Vulkan graphics and compute at launch on PowerVR GPUs”: https://blog.imgtec.com/powervr/experience-vulkan-graphics-and-compute-at-launch-on-powervr-gpus
Vulkan articles by NVidia
- “Vulkan Memory Management”: https://developer.nvidia.com/vulkan-memory-management
- “OpenGL like Vulkan”: https://developer.nvidia.com/opengl-vulkan
- “Transitioning from OpenGL to Vulkan”: https://developer.nvidia.com/transitioning-opengl-vulkan
Amazon launches new, free, high-quality game engine: Lumberyard
Today Amazon has both announced and released a new, free game engine derived fomr CryEngine.
Vulkan Programming Guide
Vulkan is a new open standard API by Khronos that offers low-level control of GPUs for graphics and general purpose computation. It has been designed from the ground up around the capabilities of modern hardware.
The Vulkan Programming Guide: The Official Guide to Learning Vulkan book written by AMD’s Graham Sellers and Google’s John Kessenich is now up for pre-orders:
A Phenomenological Scattering Model for Order-Independent Transparency
Translucent objects such as fog, smoke, glass, ice, and liquids are pervasive in cinematic environments because they frame scenes in depth and create visually compelling shots. Unfortunately, they are hard to simulate in real-time and have thus previously been rendered poorly compared to opaque surfaces in games.
This paper introduces the first model for a real-time rasterization algorithm that can simultaneously approximate the following transparency phenomena: wavelength-varying (“colored”) transmission, translucent colored shadows, caustics, partial coverage, diffusion, and refraction. All render efficiently on modern GPUs by using order-independent draw calls and low bandwidth. We include source code for the transparency and resolve shaders.
New Concurrent Hash Maps for C++
Junction, a C++ library that contains several new concurrent maps. It’s BSD-licensed, so you can use the source code freely in any project, for any purpose.
Destiny's Multithreaded Rendering Architecture
Bungie’s @mirror2mask breaks down the multithreaded rendering tech that makes Destiny look good:
CppCon 2015: Scott Wardle - Memory and C++ debugging at Electronic Arts
Scott Wardle a senior software engineer Electronic Arts will talk about the current memory and C++ debugging setup and tools used in games.
A collection of free images what can be used during unwrapping of 3D models
UVChecker-map is a collection of free images what can be helpful for unwrapping 3D models.
Extracting data from NVIDIA Physx DCC Plugin for 3DS Max.
After working a bit with the NVIDIA PhysX plugin the first question that came into my mind is how do i get my hands on all the scene data from inside the 3DS Max SDK. NVIDIA throws a hint regarding a interface static Interface_ID PX_INTERFACE_ID(0x4e0b7250, 0x16f70e0a) witch should permit access to the internal data. This seem easy at first so lest get into the code and see what happens :) .
3DS Max - skinning information
Lately i found some time to work on my game engine and i thought that skinning is a must have feature. So before grabbing the bulls by the horns and writhing shaders to multiply matrices the first question that pop up is “Where does 3DS Max keeps his skinning data? What does he offer us?”.
GPU Driver hangs.
Everybody working in the GPU shader coding business has experienced Driver Hangs/BSOD’s/System reboots due to some infinite loop/typos or other bad behaviors from the WIP Shaders.
Proper introduction.
I guess i rushed a bit the first blog post because of the website setup/adjustments and i think it’s important to have a proper introduction.
Coder's block? Make a website forum/blog and use peoples advices/critics to push you forward.
Every once in a while in the business of coding we suffer from coder’s block, either caused by the lack of ideas about what to do next or worse when you have a lot to do and you know the harsh path that follows. Using this blog i plan to leave a trail of my daily experiences in the coding world in the hopes that it will help other people and also maybe through the comment section i will get the “push” i need to move forward.
Subrandom Numbers
Clarifying confusions about subrandom numbers:
https://web.archive.org/web/20170214191611/mollwollfumble.blogspot.ro/2011/03/subrandom-numbers.html