Tim Cooper
7 年前
当前提交
0b56c45b
共有 24 个文件被更改,包括 165 次插入 和 445 次删除
-
1MaterialGraphProject/Assets/UnityShaderEditor/Editor/AssetCallbacks/CreateShaderSubGraph.cs
-
86MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/AbstractMaterialGraphEditWindow.cs
-
2MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/AbstractMaterialGraph.cs
-
1MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/AbstractShaderProperty.cs
-
5MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/ColorShaderProperty.cs
-
5MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/FloatShaderProperty.cs
-
1MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/IShaderProperty.cs
-
5MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/SamplerStateShaderProperty.cs
-
5MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/TextureShaderProperty.cs
-
5MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/Vector2ShaderProperty.cs
-
5MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/Vector3ShaderProperty.cs
-
5MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Graphs/Vector4ShaderProperty.cs
-
3MaterialGraphProject/Assets/UnityShaderEditor/Runtime/LightweightPipeline/LightweightMetallicMasterNode.cs
-
18MaterialGraphProject/Assets/UnityShaderEditor/Runtime/LightweightPipeline/LightweightSpecularMasterNode.cs
-
8MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/AbstractMaterialNode.cs
-
2MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/Input/Geometry/ViewDirectionNode.cs
-
174MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Nodes/MasterNode.cs
-
25MaterialGraphProject/Assets/UnityShaderEditor/Runtime/SubGraph/SubGraph.cs
-
61MaterialGraphProject/Assets/UnityShaderEditor/Runtime/SubGraph/SubGraphNode.cs
-
4MaterialGraphProject/Assets/UnityShaderEditor/Runtime/Util/ShaderGenerator.cs
-
12MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors/SubgraphInputNodeInspector.cs.meta
-
85MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/NodeInspectors/SubgraphInputNodeInspector.cs
-
12MaterialGraphProject/Assets/UnityShaderEditor/Runtime/SubGraph/SubGraphInputNode.cs.meta
-
80MaterialGraphProject/Assets/UnityShaderEditor/Runtime/SubGraph/SubGraphInputNode.cs
|
|||
fileFormatVersion: 2 |
|||
guid: cd0ffd0e21a6644488dda4d0470a30c6 |
|||
timeCreated: 1483808306 |
|||
licenseType: Pro |
|||
MonoImporter: |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using System.Linq; |
|||
using UnityEngine; |
|||
using UnityEngine.Graphing; |
|||
using UnityEngine.MaterialGraph; |
|||
|
|||
namespace UnityEditor.MaterialGraph.Drawing |
|||
{ |
|||
public class SubgraphInputNodeInspector : BasicNodeInspector |
|||
{ |
|||
protected enum UISlotValueType |
|||
{ |
|||
Vector4, |
|||
Vector3, |
|||
Vector2, |
|||
Vector1 |
|||
} |
|||
|
|||
private static UISlotValueType ToUISlot(SlotValueType slot) |
|||
{ |
|||
switch (slot) |
|||
{ |
|||
case SlotValueType.Vector1: |
|||
return UISlotValueType.Vector1; |
|||
case SlotValueType.Vector2: |
|||
return UISlotValueType.Vector2; |
|||
case SlotValueType.Vector3: |
|||
return UISlotValueType.Vector3; |
|||
case SlotValueType.Vector4: |
|||
return UISlotValueType.Vector4; |
|||
} |
|||
return UISlotValueType.Vector4; |
|||
} |
|||
|
|||
private static SlotValueType ToSlotValueType(UISlotValueType slot) |
|||
{ |
|||
switch (slot) |
|||
{ |
|||
case UISlotValueType.Vector1: |
|||
return SlotValueType.Vector1; |
|||
case UISlotValueType.Vector2: |
|||
return SlotValueType.Vector2; |
|||
case UISlotValueType.Vector3: |
|||
return SlotValueType.Vector3; |
|||
case UISlotValueType.Vector4: |
|||
return SlotValueType.Vector4; |
|||
} |
|||
return SlotValueType.Vector4; |
|||
} |
|||
|
|||
protected override ModificationScope DoSlotsUI() |
|||
{ |
|||
var slots = node.GetSlots<MaterialSlot>(); |
|||
if (!slots.Any()) |
|||
return ModificationScope.Node; |
|||
|
|||
GUILayout.Label("Default Slot Values", EditorStyles.boldLabel); |
|||
|
|||
bool valueChanged = false; |
|||
bool typeChanged = false; |
|||
foreach (var slot in node.GetSlots<MaterialSlot>()) |
|||
{ |
|||
EditorGUI.BeginChangeCheck(); |
|||
GUILayout.Label(slot.displayName); |
|||
slot.currentValue = EditorGUILayout.Vector4Field("", slot.currentValue); |
|||
if (EditorGUI.EndChangeCheck()) |
|||
valueChanged |= true; |
|||
|
|||
EditorGUI.BeginChangeCheck(); |
|||
var result = (UISlotValueType)EditorGUILayout.EnumPopup(ToUISlot(slot.valueType)); |
|||
slot.valueType = ToSlotValueType(result); |
|||
if (EditorGUI.EndChangeCheck()) |
|||
typeChanged |= true; |
|||
} |
|||
|
|||
GUILayout.Space(10); |
|||
|
|||
if (typeChanged) |
|||
return ModificationScope.Topological; |
|||
if (valueChanged) |
|||
return ModificationScope.Node; |
|||
|
|||
return ModificationScope.Node; |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: efdb88070ae74e94a9ed2f6ac04e6862 |
|||
timeCreated: 1465559219 |
|||
licenseType: Pro |
|||
MonoImporter: |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using UnityEngine.Graphing; |
|||
|
|||
namespace UnityEngine.MaterialGraph |
|||
{ |
|||
public class SubGraphInputNode : AbstractSubGraphIONode |
|||
{ |
|||
public SubGraphInputNode() |
|||
{ |
|||
name = "SubGraphInputs"; |
|||
} |
|||
|
|||
public override int AddSlot() |
|||
{ |
|||
var nextSlotId = GetOutputSlots<ISlot>().Count() + 1; |
|||
AddSlot(new MaterialSlot(-nextSlotId, "Input " + nextSlotId, "Input" + nextSlotId, SlotType.Output, SlotValueType.Vector4, Vector4.zero)); |
|||
return -nextSlotId; |
|||
} |
|||
|
|||
public override void RemoveSlot() |
|||
{ |
|||
var lastSlotId = GetOutputSlots<ISlot>().Count(); |
|||
if (lastSlotId == 0) |
|||
return; |
|||
|
|||
RemoveSlot(-lastSlotId); |
|||
} |
|||
|
|||
public override void CollectShaderProperties(PropertyCollector properties, GenerationMode generationMode) |
|||
{ |
|||
if (!generationMode.IsPreview()) |
|||
return; |
|||
|
|||
foreach (var slot in GetOutputSlots<MaterialSlot>()) |
|||
{ |
|||
IShaderProperty property; |
|||
switch (slot.concreteValueType) |
|||
{ |
|||
case ConcreteSlotValueType.Vector4: |
|||
property = new Vector4ShaderProperty(); |
|||
break; |
|||
case ConcreteSlotValueType.Vector3: |
|||
property = new Vector3ShaderProperty(); |
|||
break; |
|||
case ConcreteSlotValueType.Vector2: |
|||
property = new Vector2ShaderProperty(); |
|||
break; |
|||
case ConcreteSlotValueType.Vector1: |
|||
property = new FloatShaderProperty(); |
|||
break; |
|||
default: |
|||
throw new ArgumentOutOfRangeException(); |
|||
} |
|||
property.generatePropertyBlock = false; |
|||
properties.AddShaderProperty(property); |
|||
} |
|||
} |
|||
|
|||
public override void CollectPreviewMaterialProperties(List<PreviewProperty> properties) |
|||
{ |
|||
base.CollectPreviewMaterialProperties(properties); |
|||
foreach (var s in GetOutputSlots<MaterialSlot>()) |
|||
{ |
|||
properties.Add |
|||
( |
|||
new PreviewProperty |
|||
{ |
|||
m_Name = GetVariableNameForSlot(s.id), |
|||
m_PropType = ConvertConcreteSlotValueTypeToPropertyType(s.concreteValueType), |
|||
m_Vector4 = s.currentValue, |
|||
m_Float = s.currentValue.x, |
|||
m_Color = s.currentValue |
|||
} |
|||
); |
|||
} |
|||
} |
|||
} |
|||
} |
撰写
预览
正在加载...
取消
保存
Reference in new issue