Skip to content

Instantly share code, notes, and snippets.

@rorydriscoll
rorydriscoll / Shader.glsl
Created November 26, 2011 00:14
Shader experiment
// bind gloss {label:"Gloss", default:0.5, max:1, step:0.01}
// bind cdiff {label:"Diffuse Colour", r:0.6, g:0.0, b:0.0}
// bind cspec {label:"Specular Colour", r:0.3, g:0.3, b:0.3}
// bind lightstrength {label:"Light Strength", default:3, max:100, step:0.1}
// bind envtop {label:"Environment Top", r:0.0, g:0.2, b:0.4}
// bind envmiddle {label:"Environment Middle", r:0.2, g:0.2, b:0.2}
// bind envbottom {label:"Environment Bottom", r:0.01, g:0.1, b:0.01}
// bind refractiveindex {label:"Refracive Index", default:1.5, max:3, step:0.1}
// bind normalmap {label:"Normal Map", default:false}
// bind diffuse {label:"Diffuse", default:true}
@rorydriscoll
rorydriscoll / SubsetSum
Created December 3, 2011 00:32
Subset sum problem
var max_sum = -Inf, best_begin = 0, best_end = 0, cur_begin = 0, cur_sum = 0
for (i = 0; i < values.length; ++i)
# Add the current value into our working sum
cur_sum += values[i]
# Update the max sum if we beat it
if cur_sum > max_sum:
max_sum = cur_sum
@rorydriscoll
rorydriscoll / FullScreenQuad.hlsl
Created December 19, 2011 05:52
A vertex shader that uses the vertex ID to generate a full-screen quad. Don't bind vertex buffer, index buffer or input layout. Just render three vertices!
struct Output
{
float4 position_cs : SV_POSITION;
float2 texcoord : TEXCOORD;
};
Output main(uint id: SV_VertexID)
{
Output output;
@rorydriscoll
rorydriscoll / FeatherUI.cpp
Created January 8, 2012 21:56
Mikko Mononen's UI 'feathering' technique
void CalculateEdgeNormal(float& nx, float& ny, float x0, float y0, float x1, float y1)
{
const float x01 = x1 - x0;
const float y01 = y1 - y0;
const float length = Sqrt(x01 * x01 + y01 * y01);
const float dx = x01 / length;
const float dy = y01 / length;
@rorydriscoll
rorydriscoll / ParseLua.py
Created February 17, 2012 17:48
Sublime Text 2 plugin to parse lua on the fly
import sublime
import sublime_plugin
import re
from subprocess import Popen, PIPE
class ExampleCommand(sublime_plugin.EventListener):
TIMEOUT_MS = 200
def __init__(self):
@rorydriscoll
rorydriscoll / lua.sublime-build
Created February 17, 2012 18:03
Sublime Text build system for Lua
{
"cmd": ["lua", "$file"],
"file_regex": "^lua: (...*?):([0-9]*):?([0-9]*)",
"selector": "source.lua"
}
@rorydriscoll
rorydriscoll / Lua.JSON-tmLanguage
Created February 24, 2012 07:02
Lua Grammar for Sublime Text 2. All you need is Lua.tmLanguage (i.e. You don't need the JSON file). Copy Lua.tmLanguage over your existing version and restart Sublime Text.
{
"name": "Lua",
"scopeName": "source.lua",
"fileTypes": [
"lua"
],
"repository": {
"general": {
"patterns": [
{
template<unsigned int N, unsigned int I>
struct FnvHash
{
__forceinline static uint32 Hash(const char (&text)[N])
{
return (FnvHash<N, I - 1>::Hash(text) ^ text[I - 1]) * 16777619u;
}
};
template<unsigned int N>
@rorydriscoll
rorydriscoll / VS.sublime-build
Created July 10, 2012 18:29
Sublime Text Visual Studio
{
"cmd": ["C:\\Program Files (x86)\\Microsoft Visual Studio 8\\Common7\\IDE\\devenv.com", "C:\\Users\\rdriscoll\\Desktop\\Foo\\Foo.sln", "/Build"]
}
@rorydriscoll
rorydriscoll / gist:10013303
Created April 7, 2014 00:54
Inspector window setup
As a post-build step, run type database compiler to grab the pdb and convert it to a custom type database format (just a list of types, fields and enumerators).
struct Type
{
// Name of the type
char name[TypeDatabaseBlueprint::Type::kMaxName];
// Unique id for this type
Hash id;