Skip to content

Instantly share code, notes, and snippets.

View shadercoder's full-sized avatar

PeterLiou shadercoder

  • IGG
  • earth
View GitHub Profile

Let's say you have to perform a 4-way case analysis and are given a choice between cascaded 2-way branches or a single 4-way branch.

What's the difference in branch misprediction penalties, assuming the 4 cases are random?

Denote the branch penalty by x (which is 15-20 cycles on Sky Lake according to Agner Fog).

With the 4-way branch, the worst-case branch penalty is x. The expected branch penalty is 3/4 x: there's a 3/4 chance of x penalty.

@raysan5
raysan5 / custom_game_engines_small_study.md
Last active July 13, 2024 23:25
A small state-of-the-art study on custom engines

CUSTOM GAME ENGINES: A Small Study

a_plague_tale

A couple of weeks ago I played (and finished) A Plague Tale, a game by Asobo Studio. I was really captivated by the game, not only by the beautiful graphics but also by the story and the locations in the game. I decided to investigate a bit about the game tech and I was surprised to see it was developed with a custom engine by a relatively small studio. I know there are some companies using custom engines but it's very difficult to find a detailed market study with that kind of information curated and updated. So this article.

Nowadays lots of companies choose engines like Unreal or Unity for their games (or that's what lot of people think) because d

@pixelsnafu
pixelsnafu / CloudsResources.md
Last active July 10, 2024 08:04
Useful Resources for Rendering Volumetric Clouds

Volumetric Clouds Resources List

  1. A. Schneider, "Real-Time Volumetric Cloudscapes," in GPU Pro 7: Advanced Rendering Techniques, 2016, pp. 97-127. (Follow up presentations here, and here.)

  2. S. Hillaire, "Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite" in Physically Based Shading in Theory and Practice course, SIGGRAPH 2016. [video] [course notes] [scatter integral shadertoy]

  3. [R. Högfeldt, "Convincing Cloud Rendering – An Implementation of Real-Time Dynamic Volumetric Clouds in Frostbite"](https://odr.chalmers.se/hand

@phi-lira
phi-lira / CustomRenderPassFeature.cs
Created June 19, 2019 08:13
Custom Render Feature script template to be added to a LWRP Renderer. Drag 'n Drop this script to your project, write the desired rendering code. It now it's available to be added to a LWRP renderer by clicking on the + icon under renderer features in the Renderer inspector.
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.LWRP;
public class CustomRenderPassFeature : ScriptableRendererFeature
{
class CustomRenderPass : ScriptableRenderPass
{
// This method is called before executing the render pass.
// It can be used to configure render targets and their clear state. Also to create temporary render target textures.
@phi-lira
phi-lira / FullScreenQuad.cs
Created March 19, 2019 14:02
LWRP FullScreenQuad feature example. This can be used to extend LWRP render to render a full screen quad.
namespace UnityEngine.Rendering.LWRP
{
// A renderer feature contains data and logic to enqueue one or more render passes in the LWRP renderer.
// In order to add a render feature to a LWRP renderer, click on the renderer asset and then on the + icon in
// the renderer features list. LWRP uses reflection to list all renderer features in the project as available to be
// added as renderer features.
public class FullScreenQuad : ScriptableRendererFeature
{
[System.Serializable]
public struct FullScreenQuadSettings
@sebbbi
sebbbi / ConeTraceAnalytic.txt
Created August 27, 2018 07:02
Cone trace analytic solution
Spherical cap cone analytic solution is a 1d problem, since the cone cap sphere slides along the ray. The intersection point to empty space sphere is always on the ray.
S : radius of cone cap sphere at t=1
r(d) : cone cap sphere radius at distance d
r(d) = d*S
p = distance of current SDF sample
SDF(p) = sdf function result at location p
x = distance after conservative step
@CheapDevotion
CheapDevotion / BVHImporter.cs
Last active June 12, 2023 18:42
A simple Unity Editor utility that converts bvh (animation) files to fbx using the Blender Python API and imports them into your project.
using UnityEngine;
using UnityEditor;
using System.IO;
using System.Diagnostics;
public class BVHImporter : EditorWindow {
public const string BLENDER_EXEC = @"C:\Program Files\Blender Foundation\Blender\blender.exe";
public const string PHYTHON_CODE = @"import bpy;import sys;argv = sys.argv;argv = argv[argv.index(\""--\"") + 1:];bvh_in = argv[0];fbx_out = argv[0] + \"".fbx\"";objs = bpy.data.objects;bpy.ops.import_anim.bvh(filepath=bvh_in, filter_glob=\""*.bvh\"", global_scale=1, frame_start=1, use_fps_scale=False, use_cyclic=False, rotate_mode='NATIVE', axis_forward='-Z', axis_up='Y');objs.remove(objs[\""Cube\""], True);objs.remove(objs[\""Lamp\""], True);objs.remove(objs[\""Camera\""], True);bpy.ops.export_scene.fbx(filepath=fbx_out, axis_forward='-Z', axis_up='Y', use_anim=True, use_selection=True, use_default_take=False);";
@paniq
paniq / perfect_spatial_hashing.txt
Last active June 21, 2024 14:56
Perfect Spatial Hashing
# forays into
Perfect Spatial Hashing (Lefebvre & Hoppe)
http://hhoppe.com/perfecthash.pdf
how it works:
There are two parts: a slow encoding step, and a fast decoding step.
Encoding
@paniq
paniq / bernstein.glsl
Last active May 10, 2018 07:06
Bernstein Polynomial Basis Coefficients as derived from mix()
// Bernstein Polynomial Basis Coefficients as derived from mix()
// x is in range 0..1
void basis (float x) {
// basis 0
float b00 = 1.0;
// basis 1
float b10 = mix(b00, 0.0, x);
float b11 = mix(0.0, b00, x);
# Matt Zucker - April 2018
# Showing something went wrong with my proof sketch at
# https://mzucker.github.io/pdfs/disc_vs_sphere.pdf
import numpy as np
import matplotlib.pyplot as plt
def rejection_sample(n, dim):
pts = np.random.random((n, dim))*2-1