Skip to content

Instantly share code, notes, and snippets.

View JSandusky's full-sized avatar

Jonathan Sandusky JSandusky

  • Ohio, United States
View GitHub Profile
@JSandusky
JSandusky / MeshBatch.cs
Created September 8, 2018 02:35
Monogame automatic sorting and instancing of common draws
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using DelveLib;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace Delve.Graphics
@JSandusky
JSandusky / DebugRenderer.cs
Created September 10, 2018 06:40
MonoGame DebugRenderer w/ depth + tris
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace Graphics
{
@JSandusky
JSandusky / Disp.inc
Created September 23, 2018 19:49
Monogame PBR Effect w/ POM
// Performs parallax
float HeightFieldRaycast(float2 dp, float2 ds)
{
const int linearSteps = 20;
const int binarySteps = 10;
float size = 1.0 / float(linearSteps);
float depth = 0.0;
for (int i = 0; i < linearSteps; i++)
@JSandusky
JSandusky / BakeNorm.fx
Created October 1, 2018 06:52
Render normal to texture
#if OPENGL
#define SV_POSITION POSITION
#define VS_SHADERMODEL vs_3_0
#define PS_SHADERMODEL ps_3_0
#else
#define VS_SHADERMODEL vs_4_0_level_9_1
#define PS_SHADERMODEL ps_4_0_level_9_1
#endif
matrix WorldViewProjection;
@JSandusky
JSandusky / ParticleEmitter.cpp
Created October 28, 2018 00:56
Particle emission with interpolation
//
// Copyright (c) 2008-2018 the Urho3D project.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
@JSandusky
JSandusky / Bytes.cpp
Last active November 17, 2018 02:19
Urho3D "Bytes" resource for arbitrary binary files in attributes/etc
#include <Urho3D/Resource/Bytes.h>
#include <Urho3D/Core/Context.h>
namespace Urho3D
{
/// Construct.
Bytes::Bytes(Context* context) : Resource(context)
{
@JSandusky
JSandusky / Header.h
Created November 9, 2018 23:43
Marching Triangles
class DebugRenderer;
class Context;
class Geometry;
struct MTFront;
void ImplicitTangentSpace(const Vector3& norm, Vector3& tangent, Vector3& binormal);
/// A vertex on the advancing front.
struct MTVertex
{
@JSandusky
JSandusky / Shake.as
Last active November 11, 2018 19:21
Angelscript camera shake
// Shakes an object using a # of shake intervals
// Intended behavior is to shake to random directions once per interval, optionally returning
// to the original reference direction
class Shake : ScriptObject
{
// internal state
private Vector3 referenceDirection;
private Vector3 shakeTowards;
private Vector3 shakeBase;
@JSandusky
JSandusky / asPEEK.cpp
Last active April 9, 2020 05:26
asPEEK debugger: add `friend class asPEEK` as needed for access to `Script`' and `ScriptFile` internals
/*
Copyright (c) 2012 Muhammed Ikbal Akpaca
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
@JSandusky
JSandusky / 27_Urho2DPhysics.as
Created December 16, 2018 22:18
Repro for Physics 2d raycast bug
// Urho2D physics sample.
// This sample demonstrates:
// - Creating both static and moving 2D physics objects to a scene
// - Displaying physics debug geometry
#include "Scripts/Utilities/Sample.as"
void Start()
{
// Execute the common startup for samples