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 / PerfScaling.cs
Last active April 7, 2026 17:21
Scaling resolution dynamically in a StereoKit app based on GPU timing
//////////////////////
// Dynamic Performance Scaling
static float perfGpuSmoothed = 0;
static float perfCurrentScale = 0;
/// <summary>Dynamically adjusts Renderer.ViewportScaling based on GPU
/// performance relative to the display's refresh rate budget. Call this
/// each frame to maintain smooth performance.</summary>
/// <param name="targetUtilization">Fraction of the GPU frame budget to
@maluoi
maluoi / XrRefreshRate.cs
Created August 14, 2025 17:24
Simplified implementation of XR_FB_display_refresh_rate for StereoKit
using System;
namespace StereoKit.Framework
{
class XrRefreshRate : IStepper
{
int _rate;
public bool Enabled { get; private set; }
public XrRefreshRate() : this(0) { }
private static void LogModelInfo(Model m)
{
Log.Info($"Model: {m.Id}");
int vertCount = 0;
int triCount = 0;
foreach (ModelNode n in m.Visuals)
{
Mesh mesh = n.Mesh;
vertCount += mesh.VertCount;
@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 22, 2025 21:46
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