浏览代码

Add Polygon node

/main
Matt Dean 7 年前
当前提交
e7f2c3a5
共有 3 个文件被更改,包括 51 次插入0 次删除
  1. 40
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/Procedural/Shape/PolygonNode.cs
  2. 11
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/Procedural/Shape/PolygonNode.cs.meta

40
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/Procedural/Shape/PolygonNode.cs


using System.Reflection;
using UnityEngine;
namespace UnityEditor.ShaderGraph
{
[Title("Procedural", "Shape", "Polygon")]
public class PolygonNode : CodeFunctionNode
{
public PolygonNode()
{
name = "Polygon";
}
protected override MethodInfo GetFunctionToConvert()
{
return GetType().GetMethod("Unity_Polygon", BindingFlags.Static | BindingFlags.NonPublic);
}
static string Unity_Polygon(
[Slot(0, Binding.MeshUV0)] Vector2 UV,
[Slot(1, Binding.None, 6, 6, 6, 6)] Vector1 Sides,
[Slot(2, Binding.None, 1, 1, 1, 1)] Vector1 Radius,
[Slot(3, Binding.None)] Vector1 Rotation,
[Slot(4, Binding.None)] out DynamicDimensionVector Out)
{
return
@"
{
{precision} tau = 6.28318530718;
{precision}2 uv = (UV * 2 - 1) * {precision}2(1, -1);
{precision} pCoord = atan2(uv.x, uv.y) + radians(Rotation);
{precision} r = tau / Sides;
{precision} distance = cos(floor(0.5 + pCoord / r) * r - pCoord) * length(uv);
{precision} value = 1.0 - smoothstep(.4, .41, distance);
Out = value;
}
";
}
}
}

11
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/Procedural/Shape/PolygonNode.cs.meta


fileFormatVersion: 2
guid: 97e0f55e76f7d88449d41fe897188d67
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存