Skip to content

Instantly share code, notes, and snippets.

View sketchpunk's full-sized avatar
🏠
Working from home

SketchPunk sketchpunk

🏠
Working from home
View GitHub Profile
@sketchpunk
sketchpunk / GpuPrinter.cginc
Created August 12, 2024 14:05 — forked from FreyaHolmer/GpuPrinter.cginc
A unity shader .cginc to draw numbers in the fragment shader - see the first comment below for example usage!
///////////////////////////////////////////////////////////////////////////////
// ABOUT: A unity Shader .cginc to draw numbers in the fragment shader
// AUTHOR: Freya Holmér
// LICENSE: Use for whatever, commercial or otherwise!
// Don't hold me liable for issues though
// But pls credit me if it works super well <3
// LIMITATIONS: There's some precision loss beyond 3 decimal places
// CONTRIBUTORS: yes please! if you know a more precise way to get
// decimal digits then pls lemme know!
// GetDecimalSymbolAt() could use some more love/precision
@sketchpunk
sketchpunk / maths_resources.txt
Last active July 18, 2024 16:59
Math Resources
https://gdcvault.com/play/1020787/Math-for-Game-Programmers-Introduction
https://marctenbosch.com/quaternions/ // About Rotor instead of Quats
https://jacquesheunis.com/post/rotors/
https://www.youtube.com/watch?v=htYh-Tq7ZBI // Freya about vectors
https://math.okstate.edu/people/lebl/osu4013-f19/diffforms.pdf
https://www.youtube.com/watch?v=_pKxbNyjNe8&list=PLRlVmXqzHjUQARA37r4Qw3SHPqVXgqO6c // what is a tensors plus more
// OcTree with Morton Order
// based on http://marupeke296.com/COL_3D_No15_Octree.html
//
// +------+------+
// |\ 2 \ 3 \
// | +------+------+
// + |\ \ \
// |\| +------+------+
// | + | | |
// +0|\| 6 | 7 |
audioContainer: {
height: '30px',
overflow: 'hidden',
backgroundColor: '#26476F',
boxShadow: '0px 0px 5px 2px rgba( 0,0,0,0.55 )',
borderRadius: '4px',
color: '#ffffff',
},
audio: {
/**
* \brief Returns positional offset for a given point as a result of summing 4 gerstner waves
* \param positionWS point in world space
* \param wavelengths wavelength of each of the 4 waves
* \param amplitudes amplitudes of each of the 4 waves
* \param directions direction of each of the 4 waves (each row = one direction). MUST BE NORMALIZED!
* \param speed global speed multiplier. Individual wave speed depends on Wavelength
* \param steepness Gerstner wave 'Steepness' parameter. Modulates the horizontal offset of points
* \param normal returns the normal of given point.
* \return positional offset of the given point
@sketchpunk
sketchpunk / color_ramp.txt
Last active February 1, 2024 23:10
WebGL : Blender 4.0 GLSL Nodes
// #region CUSTOM - NON-BLENDER CODE
/*
USAGE
vec3 ramp_col[9] = vec3[](
rgb(0x0F2936),
rgb(0x123243),
rgb(0x24525D),
rgb(0x437274),
rgb(0x263F41),
@sketchpunk
sketchpunk / pipeGenerator.cs
Created September 27, 2023 12:05 — forked from antonkudin/pipeGenerator.cs
Generates pipe mesh from mesh segments
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class pipeGenerator : MonoBehaviour
{
[SerializeField] Mesh straightMesh;
[SerializeField] Mesh elbowMesh;
[Space]
[SerializeField] Vector3[] pathPoints;
@sketchpunk
sketchpunk / BinaryTree_Heap.js
Created April 1, 2023 16:45
Min and Max Heap
/*
const heap = new BinaryHeap( IsMinCompare );
heap.add( 5 );
heap.add( 8 );
heap.add( 6 );
heap.add( 9 );
heap.add( 13 );
heap.add( 3 );
heap.add( 1 );
@sketchpunk
sketchpunk / arcball.js
Last active July 22, 2023 06:24
Maths for various camera movement ( Orbit, Arcball, FPS, Zoom, etc )
/** Using a faux sphere in screen space, determine the arc transform to orbit
* the camera around a target position. A continuous orientation will
* be provided for further calls.
*/
function arcBallTransform(
scrSize, // Screen size, vec2
scrPos0, // Starting mouse position, vec2
scrPos1, // Ending Mouse Positiong, vec2
rotOrientation, // Current arc orientation, quaternion
targetPos, // Position to orbit around
@sketchpunk
sketchpunk / eulerRotation.c
Last active March 16, 2023 03:24
Apply Euler Rotation on position & normals in GLSL
/*
vec3 rot = vec3( 90.0, 90.0, 0.0 );
vec3 pos = position * scale;
vec3 norm = normal;
eulerRotation( rot * DEG2RAD, pos, norm );
*/
const float DEG2RAD = 0.01745329251; // PI / 180
// Apply YXZ radian rotation