浏览代码

Update MaterialGraph external (and move CollectFromNodesFromNodes to NodeUtils)

/scriptablerenderloop-materialgraph
Paul Demeulenaere 8 年前
当前提交
8826e655
共有 1 个文件被更改,包括 1 次插入34 次删除
  1. 35
      Assets/ScriptableRenderLoop/HDRenderLoop/HDRenderloopMaterialGraph.cs

35
Assets/ScriptableRenderLoop/HDRenderLoop/HDRenderloopMaterialGraph.cs


}
}
private static void CollectFromNodesFromNodes(List<INode> nodeList, INode node, List<int> slotId)
{
// no where to start
if (node == null)
return;
// allready added this node
if (nodeList.Contains(node))
return;
// if we have a slot passed in but can not find it on the node abort
if (slotId != null && node.GetInputSlots<ISlot>().All(x => !slotId.Contains(x.id)))
return;
var validSlots = ListPool<int>.Get();
if (slotId != null)
slotId.ForEach(x => validSlots.Add(x));
else
validSlots.AddRange(node.GetInputSlots<ISlot>().Select(x => x.id));
foreach (var slot in validSlots)
{
foreach (var edge in node.owner.GetEdges(node.GetSlotReference(slot)))
{
var outputNode = node.owner.GetNodeFromGuid(edge.outputSlot.nodeGuid);
CollectFromNodesFromNodes(nodeList, outputNode, null);
}
}
nodeList.Add(node);
ListPool<int>.Release(validSlots);
}
private class Vayring
{
public string attributeName;

var needFragInputRegex = new Regex(useSurfaceFragInput);
var slotIDList = GetInputSlots<MaterialSlot>().Where(s => useDataInputRegex.IsMatch(s.shaderOutputName)).Select(s => s.id).ToList();
CollectFromNodesFromNodes(activeNodeList, this, slotIDList);
NodeUtils.DepthFirstCollectNodesFromNodeSlotList(activeNodeList, this, slotIDList);
var vayrings = new List<Vayring>();
for (int iTexCoord = 0; iTexCoord < 4; ++iTexCoord)
{

正在加载...
取消
保存