Marius's Blog

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/


Leapfrog Probing

A strategy for determining the bucket and position of a hash table item:

https://preshing.com/20160314/leapfrog-probing/


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.

https://transvoxel.org/


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.


Vulkan articles by NVidia


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:


  • Amazon :

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:


Multiple-Scattering Microfacet BSDFs with the Smith Model


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.

Source: https://github.com/Arahnoid/UVChecker-map


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