浏览代码

Add slot type for bound types to be used in PBR Master node

/main
Jens Holm 7 年前
当前提交
27242a3d
共有 4 个文件被更改,包括 63 次插入8 次删除
  1. 9
      com.unity.shadergraph/Editor/Data/Graphs/NormalMaterialSlot.cs
  2. 2
      com.unity.shadergraph/Editor/Data/MasterNodes/PBRMasterNode.cs
  3. 49
      com.unity.shadergraph/Editor/Data/Graphs/BoundVector3MaterialSlot.cs
  4. 11
      com.unity.shadergraph/Editor/Data/Graphs/BoundVector3MaterialSlot.cs.meta

9
com.unity.shadergraph/Editor/Data/Graphs/NormalMaterialSlot.cs


using System;
using UnityEditor.ShaderGraph.Drawing.Slots;
using UnityEngine.Experimental.UIElements;
using UnityEngine;
public class NormalMaterialSlot : SpaceMaterialSlot, IMayRequireNormal, IMayRequireTangent
public class NormalMaterialSlot : SpaceMaterialSlot, IMayRequireNormal
{
public NormalMaterialSlot()
{}

}
public NeededCoordinateSpace RequiresNormal()
{
if (isConnected)
return NeededCoordinateSpace.None;
return space.ToNeededCoordinateSpace();
}
public NeededCoordinateSpace RequiresTangent()
{
if (isConnected)
return NeededCoordinateSpace.None;

2
com.unity.shadergraph/Editor/Data/MasterNodes/PBRMasterNode.cs


{
name = "PBR Master";
AddSlot(new ColorRGBMaterialSlot(AlbedoSlotId, AlbedoSlotName, AlbedoSlotName, SlotType.Input, Color.grey, ShaderStage.Fragment));
AddSlot(new NormalMaterialSlot(NormalSlotId, NormalSlotName, NormalSlotName, CoordinateSpace.Tangent, ShaderStage.Fragment));
AddSlot(new BoundVector3MaterialSlot(NormalSlotId, NormalSlotName, NormalSlotName, new Vector3(0, 0, 1), CoordinateSpace.Tangent, ShaderStage.Fragment));
AddSlot(new ColorRGBMaterialSlot(EmissionSlotId, EmissionSlotName, EmissionSlotName, SlotType.Input, Color.black, ShaderStage.Fragment));
if (model == Model.Metallic)
AddSlot(new Vector1MaterialSlot(MetallicSlotId, MetallicSlotName, MetallicSlotName, SlotType.Input, 0, ShaderStage.Fragment));

49
com.unity.shadergraph/Editor/Data/Graphs/BoundVector3MaterialSlot.cs


using System;
using UnityEditor.Graphing;
using UnityEditor.ShaderGraph.Drawing.Slots;
using UnityEngine;
using UnityEngine.Experimental.UIElements;
namespace UnityEditor.ShaderGraph
{
[Serializable]
public class BoundVector3MaterialSlot : SpaceMaterialSlot
{
[SerializeField]
private CoordinateSpace m_Space;
public BoundVector3MaterialSlot()
{
}
public BoundVector3MaterialSlot(
int slotId,
string displayName,
string shaderOutputName,
Vector3 value,
CoordinateSpace space,
ShaderStage shaderStage = ShaderStage.Dynamic,
bool hidden = false)
: base(slotId, displayName, shaderOutputName, space, shaderStage, hidden)
{
this.value = value;
}
public override VisualElement InstantiateControl()
{
return new BoundInputVectorControlView(space + " Space");
}
protected override string ConcreteSlotValueAsVariable(AbstractMaterialNode.OutputPrecision precision)
{
return precision + String.Format("3 ({0}, {1}, {2})", NodeUtils.FloatToShaderValue(value.x), NodeUtils.FloatToShaderValue(value.y), NodeUtils.FloatToShaderValue(value.z));
}
public override void CopyValuesFrom(MaterialSlot foundSlot)
{
var slot = foundSlot as BoundVector3MaterialSlot;
if (slot != null)
value = slot.value;
}
}
}

11
com.unity.shadergraph/Editor/Data/Graphs/BoundVector3MaterialSlot.cs.meta


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