Skip to content

Instantly share code, notes, and snippets.

View maluoi's full-sized avatar
:shipit:
Squirreling away code.

Nick Klingensmith maluoi

:shipit:
Squirreling away code.
View GitHub Profile
@maluoi
maluoi / frosted_quadrant.hlsl
Created July 3, 2024 17:42
Frosty UI shader
// This is a QUADRANTIFIED shader, and should be used with QUADRANTIFIED meshes
// only. Queadrantified meshes are commonly found in StereoKit's UI.
#include "stereokit.hlsli"
//--frost_level = 1
//--frost_blend = 0.1
int frost_level;
float frost_blend;
@maluoi
maluoi / DynAnim.cs
Last active June 4, 2024 04:35
A basic tweening / lerping library for StereoKit.
// SPDX-License-Identifier: MIT
// The authors below grant copyright rights under the MIT license:
// Copyright (c) 2024 Nick Klingensmith
using System;
namespace StereoKit.Framework
{
/// <summary> Don't know which to use? Try SoftOut! It's a great default!
/// This site is a great reference for how these functions look:
@maluoi
maluoi / stereo.hlsl
Last active February 23, 2024 23:40
A shader for StereoKit that allows for rendering side-by-side stereo textures.
#include <stereokit.hlsli>
//--color:color = 1,1,1,1
//--tex_scale = 1
//--diffuse = white
float4 color;
float tex_scale;
Texture2D diffuse : register(t0);
SamplerState diffuse_s : register(s0);
@maluoi
maluoi / OldTheme.cs
Created December 28, 2023 06:14
StereoKit previous theme
// This function will restore the StereoKit theme used in versions prior to
// v0.3.9.
// This also requires the previous UI shaders, you will need to copy them and
// add them to your project's Assets. This file references them as:
// ui.hlsl - https://github.com/StereoKit/StereoKit/blob/646afeef576a2f04103b0b99e2ee932cffa814b4/StereoKitC/shaders_builtin/shader_builtin_ui.hlsl
// ui_quadrant.hlsl - https://github.com/StereoKit/StereoKit/blob/646afeef576a2f04103b0b99e2ee932cffa814b4/StereoKitC/shaders_builtin/shader_builtin_ui_quadrant.hlsl
static void ApplyTheme_SKPrevious()
{
@maluoi
maluoi / interactable.hlsl
Last active September 20, 2023 01:41
StereoKit shader for a dotted interaction surface
#include "stereokit.hlsli"
//--color:color = 1, 1, 1, 1
//--grid_size = 0.004
//--dot_percent = 0.1
//--show_radius = 0.04
float4 color;
float grid_size;
float dot_percent;
@maluoi
maluoi / BinMesh.cs
Created July 26, 2023 02:30
A quick format for writing a simple StereoKit mesh to a fairly slim file.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using StereoKit;
class BinMesh {
const uint binMeshIdentifier = 0x06b8d800; // a nice blue color
const uint binMeshVersion = 0x00000001; // and then a version, should never make it to 255!
@maluoi
maluoi / Inspector.cs
Last active June 8, 2023 06:05
A reflection based class inspector/editor for StereoKit
using System;
using System.Linq;
using System.Reflection;
namespace StereoKit.Framework
{
///////////////////////////////////////////
abstract class InspectorAttribute : Attribute
@maluoi
maluoi / GrabBar.cs
Last active March 22, 2023 22:21
StereoKit: using a grab bar below the window for movement.
Pose grabBarPose = new Pose(0, 0, -0.5f, Quat.LookDir(0, 0, 1));
Vec2 windowSize = Vec2.Zero; // First frame will not be in the right spot unless we know window size in advance.
public void Update()
{
// Use the size of the Window to position it directly above the grab
// bar. Note that we're using the Pose relative Up direction instead of
// just the Y axis.
Pose windowPose = grabBarPose;
windowPose.position -= grabBarPose.Up * windowSize.y;
// Begin the window, only show the body, and don't allow the user to
@maluoi
maluoi / SKRecenter.cs
Last active September 14, 2023 07:22
StereoKit "Reset to center"
using StereoKit;
SK.Initialize("SKRecenter");
SK.Run(() => {
Mesh.Sphere.Draw(Material.Default, Matrix.TS(0, 0, -0.5f, 0.1f));
if (Input.Key(Key.Space).IsJustActive()) {
// Get the head pose, and flatten the rotation to just the Y axis.
Pose head = Input.Head;
head.orientation.x = 0;
@maluoi
maluoi / Assets\fresnel.hlsl
Last active February 25, 2023 05:07
StereoKit fresnel shader
#include <stereokit.hlsli>
//--color: color = 1,1,1,1
//--color2:color = 0,0,0,1
//--slope = 1000
//--threshold = 0.2
float4 color;
float4 color2;
float threshold;