浏览代码

Color slots (a vec4 slot with a different input control)

/main
Peter Bay Bastian 7 年前
当前提交
69616da6
共有 7 个文件被更改,包括 87 次插入13 次删除
  1. 2
      MaterialGraphProject/Assets/NewNodes/Editor/Keep/ColorBalanceNode.cs
  2. 26
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/CodeFunctionNode.cs
  3. 9
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Resources/Styles/MaterialGraph.uss
  4. 29
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Graphs/ColorMaterialSlot.cs
  5. 3
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Graphs/ColorMaterialSlot.cs.meta
  6. 28
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/Slots/ColorSlotControlView.cs
  7. 3
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/Slots/ColorSlotControlView.cs.meta

2
MaterialGraphProject/Assets/NewNodes/Editor/Keep/ColorBalanceNode.cs


}
static string Unity_ColorBalance(
[Slot(0, Binding.None)] Vector4 inputColor,
[Slot(0, Binding.None)] Color inputColor,
[Slot(1, Binding.None)] Vector3 adjustRGB,
[Slot(2, Binding.None)] out Vector4 outColor)
{

26
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/CodeFunctionNode.cs


{
return SlotValueType.Vector4;
}
if (t == typeof(Color))
{
return SlotValueType.Vector4;
}
if (t == typeof(Texture2D))
{
return SlotValueType.Texture2D;

var attribute = GetSlotAttribute(par);
MaterialSlot s;
if (attribute.binding == Binding.None || par.IsOut)
{
if (attribute.binding == Binding.None && !par.IsOut && par.ParameterType == typeof(Color))
s = new ColorMaterialSlot(attribute.slotId, par.Name, par.Name, SlotType.Input, attribute.defaultValue ?? Vector4.zero, hidden: attribute.hidden);
else if (attribute.binding == Binding.None || par.IsOut)
ConvertTypeToSlotValueType(par),
attribute.slotId,
par.Name,
par.Name,
par.IsOut ? SlotType.Output : SlotType.Input,
attribute.defaultValue ?? Vector4.zero,
hidden: attribute.hidden);
}
ConvertTypeToSlotValueType(par),
attribute.slotId,
par.Name,
par.Name,
par.IsOut ? SlotType.Output : SlotType.Input,
attribute.defaultValue ?? Vector4.zero,
hidden: attribute.hidden);
{
}
slots.Add(s);
m_Slots.Add(attribute);

9
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Resources/Styles/MaterialGraph.uss


width: 40;
}
ColorSlotControlView {
flex-direction: row;
align-items: center;
}
ColorSlotControlView > ColorField {
width: 50;
}
.edge.fromMatrix4, .edge.fromMatrix3, .edge.fromMatrix2 {
edge-output-color: #8FC1DF;
}

29
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Graphs/ColorMaterialSlot.cs


using UnityEditor.Graphing;
using UnityEditor.ShaderGraph.Drawing.Slots;
using UnityEngine;
using UnityEngine.Experimental.UIElements;
namespace UnityEditor.ShaderGraph
{
public class ColorMaterialSlot : Vector4MaterialSlot
{
public ColorMaterialSlot() {}
public ColorMaterialSlot(
int slotId,
string displayName,
string shaderOutputName,
SlotType slotType,
Vector4 value,
ShaderStage shaderStage = ShaderStage.Dynamic,
bool hidden = false)
:base(slotId, displayName, shaderOutputName, slotType, value, shaderStage, hidden)
{
}
public override VisualElement InstantiateControl()
{
return new ColorSlotControlView(this);
}
}
}

3
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Graphs/ColorMaterialSlot.cs.meta


fileFormatVersion: 2
guid: 89d670f0d46a47d08be1209a78765617
timeCreated: 1510659340

28
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/Slots/ColorSlotControlView.cs


using UnityEditor.Experimental.UIElements;
using UnityEditor.Graphing;
using UnityEngine;
using UnityEngine.Experimental.UIElements;
namespace UnityEditor.ShaderGraph.Drawing.Slots
{
public class ColorSlotControlView : VisualElement
{
ColorMaterialSlot m_Slot;
public ColorSlotControlView(ColorMaterialSlot slot)
{
m_Slot = slot;
var colorField = new ColorField { value = slot.value };
colorField.OnValueChanged(OnValueChanged);
Add(colorField);
}
void OnValueChanged(ChangeEvent<Color> evt)
{
m_Slot.owner.owner.owner.RegisterCompleteObjectUndo("Color Change");
m_Slot.value = evt.newValue;
if (m_Slot.owner.onModified != null)
m_Slot.owner.onModified(m_Slot.owner, ModificationScope.Node);
}
}
}

3
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/Slots/ColorSlotControlView.cs.meta


fileFormatVersion: 2
guid: 07332ea5e51a4bd3b6fb63e8e07cc30b
timeCreated: 1510659384
正在加载...
取消
保存