Skip to content

Instantly share code, notes, and snippets.

@mrange
mrange / 0_README.md
Last active May 26, 2023 03:58
Happy little terminal shader

Install shader

  1. Save happy.hlsl to disk, note the path for later.
  2. Open Windows terminal settings
  3. Open settings as JSON
  4. Add a custom shader to the default profile, see excerpt below.
{
 "profiles": {
@mrange
mrange / 0_readme.md
Last active May 26, 2023 03:58
Reactor shader inspired by Microsoft Reactor Graphics. For us in windows terminal

Install shader

Note: Doesn't work on latest preview of windows terminal (2022-09-15) but should work on later previews.

  1. Save reactor.hlsl to disk, note the path for later.
  2. Open Windows terminal settings
  3. Open settings as JSON
  4. Add a custom shader to the default profile, see excerpt below.
@mrange
mrange / thindal.hlsl
Created September 11, 2022 10:38
Thindal Windows Terminal
#define WINDOWS_TERMINAL
Texture2D shaderTexture;
SamplerState samplerState;
// --------------------
#if defined(WINDOWS_TERMINAL)
cbuffer PixelShaderSettings {
float Time;
float Scale;
@mrange
mrange / RecordArray.cs
Created May 15, 2023 12:35
RecordArray C#
namespace MyNamespace
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
@mrange
mrange / Program.cs
Last active May 14, 2023 13:16
Mutate C# strings
using System.Runtime.CompilerServices;
// An "immutable" string
var x = "I am immutable";
// *Insert evil laugh here*
var y = Unsafe.As<char[]>(x);
var z = "mutable!!";
// Overwriting the string
// Might only "work" on x64 but for hackers 'Might' is good enough ;)
@mrange
mrange / Program.cs
Last active April 18, 2023 19:08
Repo of Repos
var repoRepos = new RepositoryRepository();
var pageRepo0 = repoRepos.GetRepository<IPage>();
var pageRepo1 = repoRepos.GetRepository<IPage>();
class RepositoryRepository
{
readonly List<IBaseRepository> _repos = new();
IBaseRepository CreateRepository(Type t)
{
@mrange
mrange / 0.md
Last active March 26, 2023 11:58
F# Advent 2020, Dec 6 - Church Encoded Lists

F# Advent 2020, Dec 6 - Church Encoded Lists

Introduction

The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise

Edsger W. Dijkstra

This is my contribution to F# Advent Calendar in English. Thanks to Sergey Tihon for making sure this happens every year.

module RResult =
open System.Collections.Generic
open System.Text
[<RequireQualifiedAccess>]
type RBad =
| Message of string
| Exception of exn
| Object of obj
| DescribedObject of string*obj
@mrange
mrange / README.md
Last active February 18, 2023 11:33
The joy of Shadertoy

The joy of Shadertoy

Shadertoy is an online platform where programmers can create and share shaders - small programs that run on a GPU and render graphics and animations in real-time. The platform has become popular among graphics enthusiasts and game developers, as it provides an accessible and engaging environment for exploring the capabilities of modern graphics hardware.

image shadertoy.com

The joy of Shadertoy

For those who enjoy programming and are interested in graphics, there are few experiences as rewarding as writing shaders on Shadertoy. In this blog post, we'll explore the joy of programming shaders on Shadertoy, and why it has become such a popular platform among graphics enthusiasts.

@mrange
mrange / Example.cs
Created December 20, 2022 18:30
Invariant String Interpolation
namespace SomeLib
{
using System.Globalization;
using System.Runtime.CompilerServices;
static partial class StringInterpolation
{
// This is to allow to use fast string interpolation
public static string FastInvariantInterpolation(ref DefaultInterpolatedStringHandler handler)
{