Skip to content

Instantly share code, notes, and snippets.

View CarstenHoyer's full-sized avatar

Carsten Høyer CarstenHoyer

  • Copenhagen, Denmark
View GitHub Profile
@Dan-Piker
Dan-Piker / Moebius3d
Last active February 15, 2025 06:56
Moebius transformations in 3d
//Moebius transformations in 3d, by reverse stereographic projection to the 3-sphere,
//rotation in 4d space, and projection back.
//by Daniel Piker 09/08/20
//Feel free to use, adapt and reshare. I'd appreciate a mention if you post something using this.
//You can also now find this transformation as a component in Grasshopper/Rhino
//I first wrote about these transformations here:
//https://spacesymmetrystructure.wordpress.com/2008/12/11/4-dimensional-rotations/
//If you want to transform about a given circle. Points on the circle and its axis stay on those curves.
//You can skip these 2 lines if you want to always use the origin centred unit circle.
@patriciogonzalezvivo
patriciogonzalezvivo / GLSL-geom-billboard.md
Last active February 27, 2021 14:04
GLSL Geom shader billboard
    vec2 offSet[4];
 	offSet[0] = vec2(0.,0.);
    offSet[1] = vec2(0.,1.);
    offSet[2] = vec2(1.,0.);
    offSet[3] = vec2(1.,1.);

	vec3 zAxis = normalize( vNormal[0] );
    vec3 yAxis = vec3( 0.0, 1.0, 0.0 );
 vec3 xAxis = normalize( cross(zAxis, yAxis) );
@patriciogonzalezvivo
patriciogonzalezvivo / GLSL-Lights.md
Last active November 16, 2022 01:46
GLSL Shaders Lights Funtions
@patriciogonzalezvivo
patriciogonzalezvivo / GLSL-Noise.md
Last active March 20, 2026 23:01
GLSL Noise Algorithms

Please consider using http://lygia.xyz instead of copy/pasting this functions. It expand suport for voronoi, voronoise, fbm, noise, worley, noise, derivatives and much more, through simple file dependencies. Take a look to https://github.com/patriciogonzalezvivo/lygia/tree/main/generative

Generic 1,2,3 Noise

float rand(float n){return fract(sin(n) * 43758.5453123);}

float noise(float p){
	float fl = floor(p);
  float fc = fract(p);
@patriciogonzalezvivo
patriciogonzalezvivo / GLSL-color.md
Last active August 29, 2022 15:54
GLSL color functions

RGB - YUB

mat3 yuv2rgb = mat3(1.0, 0.0, 1.28033, 1.0, -0.21482, -0.38059, 1.0, 2.12798, 0.0);
mat3 rgb2yuv = mat3(0.2126, 0.7152, 0.0722, -0.09991, -0.33609, 0.43600, 0.615, -0.5586, -0.05639);

RGB - HSV

@patriciogonzalezvivo
patriciogonzalezvivo / GLSL-Math.md
Last active February 6, 2026 14:23
GLSL Math functions

Trigonometry

const float PI = 3.1415926535897932384626433832795;
const float PI_2 = 1.57079632679489661923;
const float PI_4 = 0.785398163397448309616;

float PHI = (1.0+sqrtf(5.0))/2.0;
@patriciogonzalezvivo
patriciogonzalezvivo / StringShaders.md
Last active February 27, 2021 14:04
GLSL shaders on a strings (OF)

Stringify Macro

#define STRINGIFY(A) #A

Default Vertex

string vertexShader = STRINGIFY(	
@patriciogonzalezvivo
patriciogonzalezvivo / get string from ofSerial
Created April 27, 2013 15:27
Getting strings from ofSerial
string serialIn;
unsigned char buffer[1];
while( readBytes( buffer, 1) > 0){
if (buffer[0] == '\n'){
break;
}
serialIn.push_back(buffer[0]);
};
@patriciogonzalezvivo
patriciogonzalezvivo / MakingGeometries.md
Last active June 15, 2024 11:09
Creating Geometries in openFrameworks

Face by Face

void addFace(ofMesh& mesh, ofVec3f a, ofVec3f b, ofVec3f c) {
	ofVec3f normal = ((b - a).cross(c - a)).normalize();
	mesh.addNormal(normal);
	mesh.addVertex(a);
	mesh.addNormal(normal);
	mesh.addVertex(b);
	mesh.addNormal(normal);