Skip to content

Instantly share code, notes, and snippets.

@zeux
zeux / half-spirv.md
Last active Jun 12, 2020
Notes on supporting half-precision computation in SPIRV based shader pipelines
View half-spirv.md

The following assumes that HLSL source is used as an input for shader compilation, glslang is used to compile it to SPIRV, and then SPIRV-Cross is optionally used to compile the result to MSL/GLSL.

First, make sure you use min16floatN type instead of halfN type. This is necessary because glslang treats halfN type (with default compilation options) as floatN because unfortunately that's what DX10 does as well.

#define half min16float
#define half2 min16float2
#define half3 min16float3
View decomposetrs.cpp
void decomposeMatrix(const float* matrix, float translation[3], float rotation[4], float scale[3])
{
translation[0] = matrix[12];
translation[1] = matrix[13];
translation[2] = matrix[14];
// 0 1 2
// 4 5 6
// 8 9 10
float det =
@zeux
zeux / luau_features.pdf
Last active Feb 27, 2021
Frequently asked questions about the Lua VM work we (Roblox) are doing.
View luau_features.pdf
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@zeux
zeux / murmur.h
Last active Mar 20, 2021
MurMurHash finalizers as 32-bit integer/pointer hashers
View murmur.h
uint32_t murmur2(uint32_t h)
{
h ^= h >> 13;
h *= 0x5bd1e995;
h ^= h >> 15;
return h;
}
uint32_t murmur3(uint32_t h)
@zeux
zeux / simplifier.cpp
Created Feb 18, 2019
SIMD sloppy simplifier for "Flavors of SIMD" blog post
View simplifier.cpp
// This file is part of meshoptimizer library; see meshoptimizer.h for version/license details
#include "meshoptimizer.h"
#include <assert.h>
#include <float.h>
#include <math.h>
#include <string.h>
#ifndef TRACE
#define TRACE 0
@zeux
zeux / launch.json
Created Feb 12, 2019
Visual Studio Code launch.json for debugging with gdb via WSL
View launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/mnt/c/work/meshoptimizer/build/debug/meshoptimizer",
"args": ["-d", "data/kitten.obj"],
"stopAtEntry": false,
@zeux
zeux / README.md
Last active Jan 19, 2019
Reproduction for 36 seconds of simplification time in debug when using MSVC 2017 x64 with default settings on buddha.obj
@zeux
zeux / README.md
Last active May 23, 2019
Simplifier variants
View README.md
View roblox-graphics-apis-2019.md

State of Roblox graphics API across all platforms, with percentage deltas since EOY 2018. Updated December 29 2019.

Windows

API Share
Direct3D 11+ 85% (+5%)
Direct3D 10.1 8.5% (-1.5%)
Direct3D 10.0 5.5% (-2.5%)
Direct3D 9 1% (-1%)
@zeux
zeux / meshoptimizer.log
Created Dec 5, 2018
Amazon A1 (AArch64) vs Amazon T2 (x64). VtxCodec uses SSSE3 on x64 and NEON on ARM. Look at revision history to see the diff.
View meshoptimizer.log
a1.medium $ ./build/release/meshoptimizer buddha.obj
# buddha.obj: 549409 vertices, 1087474 triangles; read in 483.46 msec; indexed in 354.61 msec
Original : ACMR 1.556966 ATVR 3.081784 (NV 3.124747 AMD 3.277660 Intel 2.289651) Overfetch 2.105950 Overdraw 1.200370 in 0.00 msec
Random : ACMR 2.999919 ATVR 5.937897 (NV 5.937882 AMD 5.937935 Intel 5.936783) Overfetch 10.839888 Overdraw 1.218682 in 33.38 msec
Cache : ACMR 0.661465 ATVR 1.309272 (NV 1.590738 AMD 1.434356 Intel 1.138871) Overfetch 1.509062 Overdraw 1.206893 in 477.86 msec
CacheFifo: ACMR 0.689948 ATVR 1.365651 (NV 1.706663 AMD 1.516610 Intel 1.229416) Overfetch 1.552013 Overdraw 1.197034 in 146.00 msec
Overdraw : ACMR 2.776432 ATVR 5.495538 (NV 5.508446 AMD 5.527603 Intel 5.314811) Overfetch 8.624212 Overdraw 1.086317 in 209.29 msec
Fetch : ACMR 1.556966 ATVR 3.081784 (NV 3.124747 AMD 3.277660 Intel 2.289651) Overfetch 2.105950 Overdraw 1.200370 in 25.13 msec
FetchMap : ACMR 1.556966 ATVR 3.081784 (NV 3.124747 AMD 3.277660 Intel 2.289651) O