mirror of
https://github.com/Xevion/Paths.git
synced 2025-12-06 03:15:50 -06:00
basic pathfinding scripts and setup
This commit is contained in:
8
Paths/Assets/Scripts.meta
Normal file
8
Paths/Assets/Scripts.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5fc0f64b86b5e194fb7da37a41b145f1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Paths/Assets/Scripts/Algorithms.meta
Normal file
8
Paths/Assets/Scripts/Algorithms.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 783f86818564ae8429de9cef1700538a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
67
Paths/Assets/Scripts/Algorithms/AStar.cs
Normal file
67
Paths/Assets/Scripts/Algorithms/AStar.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
|
||||
public class AStar : Pathfinding {
|
||||
private Grid grid;
|
||||
|
||||
private Stack<Node> path;
|
||||
private List<Node> openList;
|
||||
private List<Node> closedList;
|
||||
|
||||
public AStar(Grid grid) {
|
||||
this.grid = grid;
|
||||
}
|
||||
|
||||
public Tuple<List<Grid>, Stack<Node>> FindPath(Vector2 Start, Vector2 End) {
|
||||
Node start = new Node(new Vector2((int) (Start.X / Node.NODE_SIZE), (int) (Start.Y / Node.NODE_SIZE)), true);
|
||||
Node end = new Node(new Vector2((int) (End.X / Node.NODE_SIZE), (int) (End.Y / Node.NODE_SIZE)), true);
|
||||
|
||||
path = new Stack<Node>();
|
||||
openList = new List<Node>();
|
||||
closedList = new List<Node>();
|
||||
Node current = start;
|
||||
|
||||
// add start node to Open List
|
||||
openList.Add(start);
|
||||
|
||||
while (openList.Count != 0 && !closedList.Exists(x => x.Position == end.Position)) {
|
||||
current = openList[0];
|
||||
openList.Remove(current);
|
||||
closedList.Add(current);
|
||||
List<Node> adjacencies = this.grid.GetAdjacentNodes(current);
|
||||
|
||||
|
||||
foreach (Node n in adjacencies) {
|
||||
if (!closedList.Contains(n) && n.Walkable) {
|
||||
if (!openList.Contains(n)) {
|
||||
n.Parent = current;
|
||||
n.DistanceToTarget = Math.Abs(n.Position.X - end.Position.X) +
|
||||
Math.Abs(n.Position.Y - end.Position.Y);
|
||||
n.Cost = n.Weight + n.Parent.Cost;
|
||||
openList.Add(n);
|
||||
openList = openList.OrderBy(node => node.F).ToList<Node>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// construct path, if end was not closed return null
|
||||
if (!closedList.Exists(x => x.Position == end.Position)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// if all good, return path
|
||||
Node temp = closedList[closedList.IndexOf(current)];
|
||||
if (temp == null) return null;
|
||||
do {
|
||||
path.Push(temp);
|
||||
temp = temp.Parent;
|
||||
} while (temp != start && temp != null);
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
private StateGrid compileState() {}
|
||||
}
|
||||
11
Paths/Assets/Scripts/Algorithms/AStar.cs.meta
Normal file
11
Paths/Assets/Scripts/Algorithms/AStar.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 986bdace85c06264c992aa5c9b7e1090
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
28
Paths/Assets/Scripts/Algorithms/Grid.cs
Normal file
28
Paths/Assets/Scripts/Algorithms/Grid.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System.Collections.Generic;
|
||||
using NUnit.Framework.Constraints;
|
||||
|
||||
public class Grid {
|
||||
private List<List<Node>> grid;
|
||||
|
||||
public Grid(int width, int height) {
|
||||
this.grid = new List<List<Node>>();
|
||||
}
|
||||
|
||||
public int GridRows => this.grid[0].Count;
|
||||
|
||||
public int GridCols => this.grid.Count;
|
||||
|
||||
public List<Node> GetAdjacentNodes(Node node) {
|
||||
List<Node> temp = new List<Node>();
|
||||
|
||||
int row = (int) node.Position.Y;
|
||||
int col = (int) node.Position.X;
|
||||
|
||||
if (row + 1 < GridRows) temp.Add(this.grid[col][row + 1]);
|
||||
if (row - 1 >= 0) temp.Add(this.grid[col][row - 1]);
|
||||
if (col - 1 >= 0) temp.Add(this.grid[col - 1][row]);
|
||||
if (col + 1 < GridCols) temp.Add(this.grid[col + 1][row]);
|
||||
|
||||
return temp;
|
||||
}
|
||||
}
|
||||
3
Paths/Assets/Scripts/Algorithms/Grid.cs.meta
Normal file
3
Paths/Assets/Scripts/Algorithms/Grid.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aaa8d48ccca14d1695b9793cd1618055
|
||||
timeCreated: 1604762273
|
||||
34
Paths/Assets/Scripts/Algorithms/Node.cs
Normal file
34
Paths/Assets/Scripts/Algorithms/Node.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System.Numerics;
|
||||
|
||||
public class Node {
|
||||
// Change this depending on what the desired size is for each element in the grid
|
||||
public static int NODE_SIZE = 32;
|
||||
public Node Parent;
|
||||
public Vector2 Position;
|
||||
|
||||
public Vector2 Center => new Vector2(Position.X + NODE_SIZE / 2, Position.Y + NODE_SIZE / 2);
|
||||
|
||||
public float DistanceToTarget;
|
||||
public float Cost;
|
||||
public float Weight;
|
||||
|
||||
public float F {
|
||||
get {
|
||||
if (DistanceToTarget != -1 && Cost != -1)
|
||||
return DistanceToTarget + Cost;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Walkable;
|
||||
|
||||
public Node(Vector2 pos, bool walkable, float weight = 1) {
|
||||
Parent = null;
|
||||
Position = pos;
|
||||
DistanceToTarget = -1;
|
||||
Cost = 1;
|
||||
Weight = weight;
|
||||
Walkable = walkable;
|
||||
}
|
||||
}
|
||||
3
Paths/Assets/Scripts/Algorithms/Node.cs.meta
Normal file
3
Paths/Assets/Scripts/Algorithms/Node.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 718839805f594a9b8b7d8fc2a2dab110
|
||||
timeCreated: 1604762141
|
||||
13
Paths/Assets/Scripts/GridNodeType.cs
Normal file
13
Paths/Assets/Scripts/GridNodeType.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
/// <summary>
|
||||
/// Describes the type of an individual node on the grid
|
||||
/// This assists with rendering of the many states of the graph.
|
||||
/// </summary>
|
||||
public enum GridNodeType {
|
||||
Empty,
|
||||
Wall,
|
||||
Start,
|
||||
End,
|
||||
Seen,
|
||||
Expanded,
|
||||
Path
|
||||
}
|
||||
11
Paths/Assets/Scripts/GridNodeType.cs.meta
Normal file
11
Paths/Assets/Scripts/GridNodeType.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1e5c3495a87ab884bb0faeb30edb56c1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
16
Paths/Assets/Scripts/Pathfinding.cs
Normal file
16
Paths/Assets/Scripts/Pathfinding.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
|
||||
/// <summary>
|
||||
/// A general interface for implementing pathfinding algorithms.
|
||||
/// </summary>
|
||||
public interface Pathfinding {
|
||||
/// <summary>
|
||||
/// Finds a valid path between two Node objects.
|
||||
/// </summary>
|
||||
/// <param name="Start"></param>
|
||||
/// <param name="End"></param>
|
||||
/// <returns>A List of Grid objects representing the timeline of Pathfinding</returns>
|
||||
Tuple<List<Grid>, Stack<Node>> FindPath(Vector2 Start, Vector2 End);
|
||||
}
|
||||
3
Paths/Assets/Scripts/Pathfinding.cs.meta
Normal file
3
Paths/Assets/Scripts/Pathfinding.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 623cb056c06e4c56827a437760b08756
|
||||
timeCreated: 1604699920
|
||||
6
Paths/Assets/Scripts/PathfindingAlgorithms.cs
Normal file
6
Paths/Assets/Scripts/PathfindingAlgorithms.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
using System.ComponentModel;
|
||||
|
||||
public enum PathfindingAlgorithms {
|
||||
[Description("A description of the A")]
|
||||
AStar
|
||||
}
|
||||
3
Paths/Assets/Scripts/PathfindingAlgorithms.cs.meta
Normal file
3
Paths/Assets/Scripts/PathfindingAlgorithms.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b24cdc9eff904f8eb4b2c42aa2cc12a2
|
||||
timeCreated: 1604700739
|
||||
8
Paths/Assets/Shaders.meta
Normal file
8
Paths/Assets/Shaders.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 253eb38144c5adb42a4bfebbe7d26cb8
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
349
Paths/Assets/Shaders/GridShader.shader
Normal file
349
Paths/Assets/Shaders/GridShader.shader
Normal file
@@ -0,0 +1,349 @@
|
||||
// Upgrade NOTE: upgraded instancing buffer 'Props' to new syntax.
|
||||
|
||||
Shader "PDT Shaders/TestGrid" {
|
||||
Properties {
|
||||
_LineColor ("Line Color", Color) = (1,1,1,1)
|
||||
_InactiveColor ("Inactive Color", Color) = (0,0,0,0)
|
||||
_ActiveColor ("Active Color", Color) = (1,0,0,1)
|
||||
[PerRendererData] _MainTex ("Albedo (RGB)", 2D) = "white" {}
|
||||
[IntRange] _GridSize("Grid Size", Range(1,100)) = 10
|
||||
_LineSize("Line Size", Range(0,1)) = 0.15
|
||||
}
|
||||
SubShader {
|
||||
Tags { "Queue"="AlphaTest" "RenderType"="TransparentCutout" }
|
||||
LOD 200
|
||||
|
||||
|
||||
CGPROGRAM
|
||||
// Physically based Standard lighting model, and enable shadows on all light types
|
||||
#pragma surface surf Standard fullforwardshadows
|
||||
#pragma target 5.0
|
||||
|
||||
sampler2D _MainTex;
|
||||
|
||||
struct Input {
|
||||
float2 uv_MainTex;
|
||||
};
|
||||
|
||||
half _Glossiness = 0.0;
|
||||
half _Metallic = 0.0;
|
||||
|
||||
float4 _LineColor;
|
||||
float4 _InactiveColor;
|
||||
float4 _ActiveColor;
|
||||
|
||||
static const float4 _gradient[250] = {
|
||||
float4(0.443, 0.0, 0.0, 1.0),
|
||||
float4(0.486, 0.0, 0.0, 1.0),
|
||||
float4(0.506, 0.0, 0.0, 1.0),
|
||||
float4(0.522, 0.0, 0.0, 1.0),
|
||||
float4(0.537, 0.0, 0.0, 1.0),
|
||||
float4(0.553, 0.0, 0.0, 1.0),
|
||||
float4(0.573, 0.0, 0.0, 1.0),
|
||||
float4(0.588, 0.0, 0.0, 1.0),
|
||||
float4(0.604, 0.0, 0.0, 1.0),
|
||||
float4(0.62, 0.0, 0.0, 1.0),
|
||||
float4(0.639, 0.0, 0.0, 1.0),
|
||||
float4(0.659, 0.0, 0.0, 1.0),
|
||||
float4(0.675, 0.0, 0.0, 1.0),
|
||||
float4(0.69, 0.0, 0.0, 1.0),
|
||||
float4(0.706, 0.0, 0.0, 1.0),
|
||||
float4(0.725, 0.0, 0.0, 1.0),
|
||||
float4(0.741, 0.0, 0.0, 1.0),
|
||||
float4(0.757, 0.0, 0.0, 1.0),
|
||||
float4(0.792, 0.0, 0.0, 1.0),
|
||||
float4(0.808, 0.0, 0.0, 1.0),
|
||||
float4(0.808, 0.0, 0.0, 1.0),
|
||||
float4(0.824, 0.0, 0.0, 1.0),
|
||||
float4(0.843, 0.0, 0.0, 1.0),
|
||||
float4(0.875, 0.012, 0.0, 1.0),
|
||||
float4(0.89, 0.027, 0.0, 1.0),
|
||||
float4(0.91, 0.039, 0.0, 1.0),
|
||||
float4(0.91, 0.039, 0.0, 1.0),
|
||||
float4(0.925, 0.055, 0.0, 1.0),
|
||||
float4(0.945, 0.078, 0.0, 1.0),
|
||||
float4(0.945, 0.094, 0.0, 1.0),
|
||||
float4(0.945, 0.11, 0.0, 1.0),
|
||||
float4(0.945, 0.125, 0.0, 1.0),
|
||||
float4(0.945, 0.133, 0.0, 1.0),
|
||||
float4(0.945, 0.149, 0.0, 1.0),
|
||||
float4(0.945, 0.165, 0.0, 1.0),
|
||||
float4(0.945, 0.176, 0.0, 1.0),
|
||||
float4(0.945, 0.192, 0.0, 1.0),
|
||||
float4(0.945, 0.204, 0.0, 1.0),
|
||||
float4(0.945, 0.216, 0.0, 1.0),
|
||||
float4(0.945, 0.231, 0.0, 1.0),
|
||||
float4(0.945, 0.247, 0.0, 1.0),
|
||||
float4(0.945, 0.263, 0.0, 1.0),
|
||||
float4(0.945, 0.271, 0.0, 1.0),
|
||||
float4(0.945, 0.286, 0.0, 1.0),
|
||||
float4(0.945, 0.302, 0.0, 1.0),
|
||||
float4(0.945, 0.314, 0.0, 1.0),
|
||||
float4(0.945, 0.329, 0.0, 1.0),
|
||||
float4(0.945, 0.341, 0.0, 1.0),
|
||||
float4(0.945, 0.353, 0.0, 1.0),
|
||||
float4(0.945, 0.369, 0.0, 1.0),
|
||||
float4(0.945, 0.384, 0.0, 1.0),
|
||||
float4(0.945, 0.4, 0.0, 1.0),
|
||||
float4(0.945, 0.408, 0.0, 1.0),
|
||||
float4(0.945, 0.424, 0.0, 1.0),
|
||||
float4(0.945, 0.439, 0.0, 1.0),
|
||||
float4(0.945, 0.451, 0.0, 1.0),
|
||||
float4(0.945, 0.467, 0.0, 1.0),
|
||||
float4(0.945, 0.478, 0.0, 1.0),
|
||||
float4(0.945, 0.494, 0.0, 1.0),
|
||||
float4(0.945, 0.506, 0.0, 1.0),
|
||||
float4(0.945, 0.522, 0.0, 1.0),
|
||||
float4(0.945, 0.537, 0.0, 1.0),
|
||||
float4(0.945, 0.545, 0.0, 1.0),
|
||||
float4(0.945, 0.576, 0.0, 1.0),
|
||||
float4(0.945, 0.576, 0.0, 1.0),
|
||||
float4(0.945, 0.588, 0.0, 1.0),
|
||||
float4(0.945, 0.604, 0.0, 1.0),
|
||||
float4(0.945, 0.616, 0.0, 1.0),
|
||||
float4(0.945, 0.643, 0.0, 1.0),
|
||||
float4(0.945, 0.659, 0.0, 1.0),
|
||||
float4(0.945, 0.675, 0.0, 1.0),
|
||||
float4(0.945, 0.675, 0.0, 1.0),
|
||||
float4(0.945, 0.682, 0.0, 1.0),
|
||||
float4(0.945, 0.714, 0.0, 1.0),
|
||||
float4(0.945, 0.725, 0.0, 1.0),
|
||||
float4(0.945, 0.741, 0.0, 1.0),
|
||||
float4(0.945, 0.753, 0.0, 1.0),
|
||||
float4(0.945, 0.769, 0.0, 1.0),
|
||||
float4(0.945, 0.78, 0.0, 1.0),
|
||||
float4(0.945, 0.796, 0.0, 1.0),
|
||||
float4(0.945, 0.808, 0.0, 1.0),
|
||||
float4(0.945, 0.82, 0.0, 1.0),
|
||||
float4(0.945, 0.835, 0.0, 1.0),
|
||||
float4(0.945, 0.851, 0.0, 1.0),
|
||||
float4(0.945, 0.867, 0.0, 1.0),
|
||||
float4(0.941, 0.875, 0.0, 1.0),
|
||||
float4(0.929, 0.89, 0.0, 1.0),
|
||||
float4(0.918, 0.906, 0.0, 1.0),
|
||||
float4(0.902, 0.918, 0.004, 1.0),
|
||||
float4(0.89, 0.933, 0.02, 1.0),
|
||||
float4(0.878, 0.945, 0.031, 1.0),
|
||||
float4(0.871, 0.945, 0.043, 1.0),
|
||||
float4(0.855, 0.945, 0.055, 1.0),
|
||||
float4(0.843, 0.945, 0.067, 1.0),
|
||||
float4(0.831, 0.945, 0.078, 1.0),
|
||||
float4(0.82, 0.945, 0.09, 1.0),
|
||||
float4(0.808, 0.945, 0.102, 1.0),
|
||||
float4(0.796, 0.945, 0.114, 1.0),
|
||||
float4(0.784, 0.945, 0.129, 1.0),
|
||||
float4(0.773, 0.945, 0.137, 1.0),
|
||||
float4(0.761, 0.945, 0.149, 1.0),
|
||||
float4(0.745, 0.945, 0.161, 1.0),
|
||||
float4(0.737, 0.945, 0.176, 1.0),
|
||||
float4(0.725, 0.945, 0.188, 1.0),
|
||||
float4(0.714, 0.945, 0.2, 1.0),
|
||||
float4(0.702, 0.945, 0.208, 1.0),
|
||||
float4(0.686, 0.945, 0.22, 1.0),
|
||||
float4(0.675, 0.945, 0.235, 1.0),
|
||||
float4(0.655, 0.945, 0.259, 1.0),
|
||||
float4(0.655, 0.945, 0.259, 1.0),
|
||||
float4(0.639, 0.945, 0.267, 1.0),
|
||||
float4(0.627, 0.945, 0.282, 1.0),
|
||||
float4(0.616, 0.945, 0.294, 1.0),
|
||||
float4(0.592, 0.945, 0.318, 1.0),
|
||||
float4(0.58, 0.945, 0.333, 1.0),
|
||||
float4(0.569, 0.945, 0.341, 1.0),
|
||||
float4(0.569, 0.945, 0.341, 1.0),
|
||||
float4(0.557, 0.945, 0.353, 1.0),
|
||||
float4(0.533, 0.945, 0.376, 1.0),
|
||||
float4(0.522, 0.945, 0.392, 1.0),
|
||||
float4(0.51, 0.945, 0.404, 1.0),
|
||||
float4(0.498, 0.945, 0.412, 1.0),
|
||||
float4(0.498, 0.945, 0.412, 1.0),
|
||||
float4(0.471, 0.945, 0.439, 1.0),
|
||||
float4(0.463, 0.945, 0.451, 1.0),
|
||||
float4(0.451, 0.945, 0.463, 1.0),
|
||||
float4(0.439, 0.945, 0.471, 1.0),
|
||||
float4(0.424, 0.945, 0.482, 1.0),
|
||||
float4(0.412, 0.945, 0.498, 1.0),
|
||||
float4(0.404, 0.945, 0.51, 1.0),
|
||||
float4(0.392, 0.945, 0.522, 1.0),
|
||||
float4(0.376, 0.945, 0.533, 1.0),
|
||||
float4(0.365, 0.945, 0.545, 1.0),
|
||||
float4(0.353, 0.945, 0.557, 1.0),
|
||||
float4(0.341, 0.945, 0.569, 1.0),
|
||||
float4(0.333, 0.945, 0.58, 1.0),
|
||||
float4(0.318, 0.945, 0.592, 1.0),
|
||||
float4(0.306, 0.945, 0.604, 1.0),
|
||||
float4(0.294, 0.945, 0.616, 1.0),
|
||||
float4(0.282, 0.945, 0.627, 1.0),
|
||||
float4(0.267, 0.945, 0.639, 1.0),
|
||||
float4(0.259, 0.945, 0.655, 1.0),
|
||||
float4(0.247, 0.945, 0.667, 1.0),
|
||||
float4(0.235, 0.945, 0.675, 1.0),
|
||||
float4(0.22, 0.945, 0.686, 1.0),
|
||||
float4(0.208, 0.945, 0.702, 1.0),
|
||||
float4(0.2, 0.945, 0.714, 1.0),
|
||||
float4(0.188, 0.945, 0.725, 1.0),
|
||||
float4(0.176, 0.945, 0.737, 1.0),
|
||||
float4(0.161, 0.945, 0.745, 1.0),
|
||||
float4(0.149, 0.945, 0.761, 1.0),
|
||||
float4(0.137, 0.945, 0.773, 1.0),
|
||||
float4(0.129, 0.945, 0.784, 1.0),
|
||||
float4(0.102, 0.945, 0.808, 1.0),
|
||||
float4(0.102, 0.945, 0.808, 1.0),
|
||||
float4(0.09, 0.945, 0.82, 1.0),
|
||||
float4(0.078, 0.945, 0.831, 1.0),
|
||||
float4(0.067, 0.937, 0.843, 1.0),
|
||||
float4(0.043, 0.906, 0.871, 1.0),
|
||||
float4(0.031, 0.89, 0.878, 1.0),
|
||||
float4(0.031, 0.89, 0.878, 1.0),
|
||||
float4(0.02, 0.875, 0.89, 1.0),
|
||||
float4(0.004, 0.859, 0.902, 1.0),
|
||||
float4(0.0, 0.831, 0.929, 1.0),
|
||||
float4(0.0, 0.816, 0.941, 1.0),
|
||||
float4(0.0, 0.804, 0.945, 1.0),
|
||||
float4(0.0, 0.788, 0.945, 1.0),
|
||||
float4(0.0, 0.788, 0.945, 1.0),
|
||||
float4(0.0, 0.757, 0.945, 1.0),
|
||||
float4(0.0, 0.741, 0.945, 1.0),
|
||||
float4(0.0, 0.729, 0.945, 1.0),
|
||||
float4(0.0, 0.714, 0.945, 1.0),
|
||||
float4(0.0, 0.698, 0.945, 1.0),
|
||||
float4(0.0, 0.682, 0.945, 1.0),
|
||||
float4(0.0, 0.671, 0.945, 1.0),
|
||||
float4(0.0, 0.655, 0.945, 1.0),
|
||||
float4(0.0, 0.639, 0.945, 1.0),
|
||||
float4(0.0, 0.62, 0.945, 1.0),
|
||||
float4(0.0, 0.608, 0.945, 1.0),
|
||||
float4(0.0, 0.596, 0.945, 1.0),
|
||||
float4(0.0, 0.58, 0.945, 1.0),
|
||||
float4(0.0, 0.565, 0.945, 1.0),
|
||||
float4(0.0, 0.549, 0.945, 1.0),
|
||||
float4(0.0, 0.537, 0.945, 1.0),
|
||||
float4(0.0, 0.522, 0.945, 1.0),
|
||||
float4(0.0, 0.502, 0.945, 1.0),
|
||||
float4(0.0, 0.49, 0.945, 1.0),
|
||||
float4(0.0, 0.475, 0.945, 1.0),
|
||||
float4(0.0, 0.463, 0.945, 1.0),
|
||||
float4(0.0, 0.447, 0.945, 1.0),
|
||||
float4(0.0, 0.427, 0.945, 1.0),
|
||||
float4(0.0, 0.416, 0.945, 1.0),
|
||||
float4(0.0, 0.404, 0.945, 1.0),
|
||||
float4(0.0, 0.388, 0.945, 1.0),
|
||||
float4(0.0, 0.369, 0.945, 1.0),
|
||||
float4(0.0, 0.357, 0.945, 1.0),
|
||||
float4(0.0, 0.341, 0.945, 1.0),
|
||||
float4(0.0, 0.329, 0.945, 1.0),
|
||||
float4(0.0, 0.298, 0.945, 1.0),
|
||||
float4(0.0, 0.298, 0.945, 1.0),
|
||||
float4(0.0, 0.282, 0.945, 1.0),
|
||||
float4(0.0, 0.267, 0.945, 1.0),
|
||||
float4(0.0, 0.251, 0.945, 1.0),
|
||||
float4(0.0, 0.224, 0.945, 1.0),
|
||||
float4(0.0, 0.208, 0.945, 1.0),
|
||||
float4(0.0, 0.208, 0.945, 1.0),
|
||||
float4(0.0, 0.192, 0.945, 1.0),
|
||||
float4(0.0, 0.18, 0.945, 1.0),
|
||||
float4(0.0, 0.149, 0.945, 1.0),
|
||||
float4(0.0, 0.133, 0.945, 1.0),
|
||||
float4(0.0, 0.122, 0.945, 1.0),
|
||||
float4(0.0, 0.106, 0.945, 1.0),
|
||||
float4(0.0, 0.106, 0.945, 1.0),
|
||||
float4(0.0, 0.071, 0.945, 1.0),
|
||||
float4(0.0, 0.063, 0.945, 1.0),
|
||||
float4(0.0, 0.047, 0.945, 1.0),
|
||||
float4(0.0, 0.031, 0.945, 1.0),
|
||||
float4(0.0, 0.012, 0.945, 1.0),
|
||||
float4(0.0, 0.0, 0.945, 1.0),
|
||||
float4(0.0, 0.0, 0.945, 1.0),
|
||||
float4(0.0, 0.0, 0.945, 1.0),
|
||||
float4(0.0, 0.0, 0.945, 1.0),
|
||||
float4(0.0, 0.0, 0.945, 1.0),
|
||||
float4(0.0, 0.0, 0.925, 1.0),
|
||||
float4(0.0, 0.0, 0.91, 1.0),
|
||||
float4(0.0, 0.0, 0.89, 1.0),
|
||||
float4(0.0, 0.0, 0.875, 1.0),
|
||||
float4(0.0, 0.0, 0.859, 1.0),
|
||||
float4(0.0, 0.0, 0.839, 1.0),
|
||||
float4(0.0, 0.0, 0.824, 1.0),
|
||||
float4(0.0, 0.0, 0.808, 1.0),
|
||||
float4(0.0, 0.0, 0.792, 1.0),
|
||||
float4(0.0, 0.0, 0.773, 1.0),
|
||||
float4(0.0, 0.0, 0.757, 1.0),
|
||||
float4(0.0, 0.0, 0.741, 1.0),
|
||||
float4(0.0, 0.0, 0.725, 1.0),
|
||||
float4(0.0, 0.0, 0.706, 1.0),
|
||||
float4(0.0, 0.0, 0.69, 1.0),
|
||||
float4(0.0, 0.0, 0.675, 1.0),
|
||||
float4(0.0, 0.0, 0.659, 1.0),
|
||||
float4(0.0, 0.0, 0.639, 1.0),
|
||||
float4(0.0, 0.0, 0.62, 1.0),
|
||||
float4(0.0, 0.0, 0.604, 1.0),
|
||||
float4(0.0, 0.0, 0.588, 1.0),
|
||||
float4(0.0, 0.0, 0.573, 1.0),
|
||||
float4(0.0, 0.0, 0.553, 1.0),
|
||||
float4(0.0, 0.0, 0.537, 1.0),
|
||||
float4(0.0, 0.0, 0.522, 1.0),
|
||||
float4(0.0, 0.0, 0.486, 1.0),
|
||||
float4(0.0, 0.0, 0.471, 1.0)
|
||||
};
|
||||
|
||||
float _GridSize;
|
||||
float _LineSize;
|
||||
|
||||
// DX11 needed to run shader at high grid sizes
|
||||
#ifdef SHADER_API_D3D11
|
||||
StructuredBuffer<float> _values;
|
||||
#else
|
||||
float _values[1024];
|
||||
#endif
|
||||
float _valueLength;
|
||||
|
||||
|
||||
// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
|
||||
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
|
||||
// #pragma instancing_options assumeuniformscaling
|
||||
UNITY_INSTANCING_BUFFER_START(Props)
|
||||
// put more per-instance properties here
|
||||
UNITY_INSTANCING_BUFFER_END(Props)
|
||||
|
||||
void surf (Input IN, inout SurfaceOutputStandard o) {
|
||||
// Albedo comes from a texture tinted by color
|
||||
|
||||
float2 uv = IN.uv_MainTex;
|
||||
|
||||
fixed4 c = float4(0.0,0.0,0.0,0.0);
|
||||
float gsize = floor(_GridSize);
|
||||
gsize += _LineSize;
|
||||
|
||||
float2 id = float2(floor(uv.x/(1.0/gsize)), floor(uv.y/(1.0/gsize)));
|
||||
|
||||
float4 color = _InactiveColor;
|
||||
float brightness = _InactiveColor.w;
|
||||
|
||||
// Line Color Check
|
||||
if (_LineSize > 0.0 && (frac(uv.x*gsize) <= _LineSize || frac(uv.y*gsize) <= _LineSize)){
|
||||
color = _LineColor;
|
||||
brightness = color.w;
|
||||
// Heatmap Value Fallback
|
||||
} else {
|
||||
float pos = id.y * _GridSize + id.x;
|
||||
if(pos < _valueLength) {
|
||||
float index = clamp(floor(_values[pos] * 250), 0, 99);
|
||||
color = _gradient[index];
|
||||
// color = lerp(_InactiveColor, _ActiveColor, _values[pos]);
|
||||
brightness = color.w;
|
||||
}
|
||||
}
|
||||
|
||||
// Clip transparent spots using alpha cutout
|
||||
if (brightness == 0.0)
|
||||
clip(c.a - 1.0);
|
||||
|
||||
o.Albedo = float4(color.x * brightness,color.y * brightness,color.z * brightness, brightness);
|
||||
// Metallic and smoothness come from slider variables
|
||||
o.Metallic = 0.0;
|
||||
o.Smoothness = 0.0;
|
||||
o.Alpha = 0.0;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
FallBack "Diffuse"
|
||||
}
|
||||
9
Paths/Assets/Shaders/GridShader.shader.meta
Normal file
9
Paths/Assets/Shaders/GridShader.shader.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b4e207edb1333434ba20f91ec9066366
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
nonModifiableTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user