Skip to content

Instantly share code, notes, and snippets.

@kevinmoran
kevinmoran / BitTwiddling.h
Created February 1, 2023 12:31
Bit Twiddling Tricks From Game Engine Gems 2
// https://twitter.com/EricLengyel/status/1620683606216835073
int clearLowestSetBit(int x)
{
return x & (x-1);
}
int setLowestUnsetBit(int x)
{
return x | (x+1);
@kevinmoran
kevinmoran / SquirrelNoise5.hpp
Created July 22, 2022 22:45
Improvement on Squirrel3 noise-based RNG by Squirrel Eiserloh (https://twitter.com/SquirrelTweets/status/1421251894274625536)
//-----------------------------------------------------------------------------------------------
// SquirrelNoise5.hpp
//
#pragma once
/////////////////////////////////////////////////////////////////////////////////////////////////
// SquirrelNoise5 - Squirrel's Raw Noise utilities (version 5)
//
// This code is made available under the Creative Commons attribution 3.0 license (CC-BY-3.0 US):
@kevinmoran
kevinmoran / rand_float.cpp
Created March 31, 2021 15:49
Converting an integer to a float between 0 and 1 with bithacks (for PRNG)
// Source: "xoshiro / xoroshiro generators and the PRNG shootout"
// https://prng.di.unimi.it/
#include <stdint.h>
static inline double u64ToDoubleBetween01(uint64_t x) {
return (x >> 11) * 0x1.0p-53;
}
// I came up with the following function for 32-bit floats based on the above, let me know if it's wrong
@kevinmoran
kevinmoran / EntityProperties.cpp
Created January 21, 2021 23:11
Stretchy bitflags - Nifty code snippet from Ryan Fleury shared on Handmade Network discord
enum EntityProperty
{
EntityProperty_IsActive,
EntityProperty_RenderModel,
EntityProperty_Hostile,
EntityProperty_OnFire,
EntityProperty_SomethingElse,
EntityProperty_Count
};
@kevinmoran
kevinmoran / Programming Wisdom.md
Last active May 20, 2024 11:45
List of useful programming resources I've found
@kevinmoran
kevinmoran / Murmur3.cpp
Created May 27, 2020 09:26
Simple MurmurHash3 Implementation (from Demetri Spanos)
// Minimal Murmur3 implementation shared by Demetri Spanos on Handmade Network Discord
//
// Code is deliberately terse and simplistic
// Intended to be the first hash function you reach for e.g. a simple hash table
// *** NB THIS IS NOT A CRYPTOGRAPHIC HASH ***
//
// @demetrispanos:
// "yes let me reiterate the moral of this story
// there is never any reason to use a dumb made up hash function
// use murmur3 or jenkins-one-at-a-time for a 0-effort version
// Simple example code to load a Wav file and play it with WASAPI
// This is NOT complete Wav loading code. It is a barebones example
// that makes a lot of assumptions, see the assert() calls for details
//
// References:
// http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html
// Handmade Hero Day 138: Loading WAV Files
#include <windows.h>
#include <windows.h>
#include <mmdeviceapi.h>
#include <audioclient.h>
#include <assert.h>
#define _USE_MATH_DEFINES
#include <math.h> // for sin()
#include <stdint.h>