Skip to content

Instantly share code, notes, and snippets.

View smkplus's full-sized avatar
😍
Curios

Seyed Morteza Kamali smkplus

😍
Curios
View GitHub Profile
@smkplus
smkplus / ScreenSpaceDragAndDrop.md
Created December 4, 2019 20:26
ScreenSpaceDragAndDrop
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScreenspaceDragDrop : MonoBehaviour
{

    public Camera mCamera;
 public Canvas canvas;
@smkplus
smkplus / DirectionGizmos.md
Created January 8, 2020 17:13
DirectionGizmos
using UnityEditor;
using UnityEngine;

public class DirectionGizmos : MonoBehaviour
{
    public Transform target;
    public Color color = Color.red;
    public float thickness = 2;
@smkplus
smkplus / LightweightPipelineTemplateShader.shader
Created January 31, 2020 10:44 — forked from andybak/LightweightPipelineTemplateShader.shader
Template shader to use as guide to create Lightweight Pipeline ready shaders.
// When creating shaders for Lightweight Pipeline you can you the ShaderGraph which is super AWESOME!
// However, if you want to author shaders in shading language you can use this simplified version as a base.
// Please not this should be only use for reference only.
// It doesn't match neither performance not feature completeness of Lightweight Pipeline Standard shader.
Shader "LightweightPipeline/Physically Based Example"
{
Properties
{
// Specular vs Metallic workflow
[HideInInspector] _WorkflowMode("WorkflowMode", Float) = 1.0
@smkplus
smkplus / Shader_Cheat-Sheet.cs
Created February 7, 2020 21:08 — forked from quizcanners/Unity Fragment Shader Cheat Sheet .cs
To keep snippets of code for Shaders. Just some stuff that I often use but also often forget because brain=poo
//https://docs.unity3d.com/Manual/SL-UnityShaderVariables.html
//https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/CGIncludes/UnityCG.cginc - Most interesting stuff ;)
//https://github.com/TwoTailsGames/Unity-Built-in-Shaders/tree/master/CGIncludes
//https://docs.unity3d.com/Manual/SL-Shader.html
//http://developer.download.nvidia.com/CgTutorial/cg_tutorial_appendix_e.html
//https://unity3d.com/how-to/shader-profiling-and-optimization-tips
//https://docs.unity3d.com/Manual/SL-UnityShaderVariables.html
//http://www.deepskycolors.com/archive/2010/04/21/formulas-for-Photoshop-blending-modes.html
//http://www.iquilezles.org/blog/
//Properties
@smkplus
smkplus / UnityShadersCheatSheet.shader
Created February 10, 2020 03:24 — forked from Split82/UnityShadersCheatSheet.shader
Unity Shaders Cheat Sheet
Shader "Name" {
Properties {
_Name ("display name", Range (min, max)) = number
_Name ("display name", Float) = number
_Name ("display name", Int) = number
_Name ("display name", Color) = (number,number,number,number)
_Name ("display name", Vector) = (number,number,number,number)
// Used to generate Texture Array asset
// Menu button is available in GameObject > Create Texture Array
// See CHANGEME in the file
using UnityEngine;
using UnityEditor;
public class TextureArray : MonoBehaviour {
[MenuItem("GameObject/Create Texture Array")]
static void Create()
@smkplus
smkplus / texarray.md
Created February 10, 2020 19:18 — forked from aras-p/texarray.md
Possible texture array syntax

Unity shader side:

UNITY_DECLARE_TEX2DARRAY(name)
UNITY_SAMPLE_TEX2DARRAY(name,coord) // coord is float3

On DX11-like systems (DX11, and I'd assume XB1/PS4) the macros expand to:

#define UNITY_DECLARE_TEX2DARRAY(name) Texture2DArray(name); SamplerState sampler##name
#define UNITY_SAMPLE_TEX2DARRAY(name,coord) name.Sample(coord)
@smkplus
smkplus / Texture2DArraySurface.Shader
Created February 11, 2020 14:52 — forked from unitycoder/Texture2DArraySurface.Shader
GPU Instancing + Texture2DArray
Shader "Custom/Texture2DArraySurfaceShader"
{
Properties
{
_Textures("Textures", 2DArray) = "" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
@smkplus
smkplus / Subject.cs
Last active April 5, 2020 18:12
Observer
using System.Collections.Generic;
using UnityEngine;
//Invokes the notificaton method
public class Subject : MonoBehaviour
{
//A list with observers that are waiting for something to happen
public List<Observer> observers = new List<Observer>();
private void Start()
using UnityEngine;
public abstract class Observer : MonoBehaviour
{
public abstract void OnNotify();
}