浏览代码

ExportTextureMasterNode fix + cleanup

/main
Florent Guinier 7 年前
当前提交
9f32c80b
共有 1 个文件被更改,包括 2 次插入62 次删除
  1. 64
      MaterialGraphProject/Assets/UnityShaderEditor/Runtime/SurfaceModel/ExportTextureMasterNode.cs

64
MaterialGraphProject/Assets/UnityShaderEditor/Runtime/SurfaceModel/ExportTextureMasterNode.cs


public const string ColorSlotName = "Color";
public const int ColorSlotId = 0;
[SerializeField]
private SurfaceMaterialOptions m_MaterialOptions = new SurfaceMaterialOptions();
public SurfaceMaterialOptions options
{
get { return m_MaterialOptions; }
}
public ExportTextureMasterNode()
{
name = "ExportTextureMasterNode";

var shaderFunctionVisitor = new ShaderGenerator();
var shaderPropertiesVisitor = new PropertyGenerator();
var shaderPropertyUsagesVisitor = new ShaderGenerator();
var shaderName = "Hidden/PreviewShader/" + GetType() + guid.ToString();
//var shaderName = "Hidden/PreviewShader/" + this.GetVariableNameForSlot(this.GetOutputSlots<MaterialSlot>().First().id);
var shaderInputVisitor = new ShaderGenerator();
var vertexShaderBlock = new ShaderGenerator();

activeNode.GeneratePropertyUsages(shaderPropertyUsagesVisitor, generationMode);
}
//shaderBodyVisitor.AddShaderChunk("return " + ShaderGenerator.AdaptNodeOutputForPreview(this, GetOutputSlots<MaterialSlot>().First().id) + ";", true);
//shaderBodyVisitor.AddShaderChunk("return " + AdaptNodeInputForPreview(this, ColorSlotId) + ";", true);
//shaderBodyVisitor.AddShaderChunk("return " + GetVariableNameForSlot(GetSlotReference(ColorSlotId).slotId) + ";", true);
var inputSlot = GetInputSlots<MaterialSlot>().First();
var edges = owner.GetEdges(inputSlot.slotReference);
if (edges.Count() > 0)

}
else
{
shaderBodyVisitor.AddShaderChunk("return float4(1.0, 1.0, 1.0, 1.0);", true);
shaderBodyVisitor.AddShaderChunk("return float4(0.5, 0.5, 0.5, 0.5);", true);
template = template.Replace("${ShaderName}", shaderName);
template = template.Replace("${ShaderName}", GetType() + guid.ToString());
template = template.Replace("${ShaderPropertiesHeader}", shaderPropertiesVisitor.GetShaderString(2));
template = template.Replace("${ShaderPropertyUsages}", shaderPropertyUsagesVisitor.GetShaderString(3));
template = template.Replace("${ShaderInputs}", shaderInputVisitor.GetShaderString(4));

configuredTextures = shaderPropertiesVisitor.GetConfiguredTexutres();
return Regex.Replace(template, @"\r\n|\n\r|\n|\r", Environment.NewLine);
//=============================================================================================
/*
string templateLocation = ShaderGenerator.GetTemplatePath("ExportTexture.template");
if (!File.Exists(templateLocation))
{
configuredTextures = new List<PropertyGenerator.TextureInfo>();
return string.Empty;
}
var shaderPropertiesVisitor = new PropertyGenerator();
// figure out what kind of preview we want!
var activeNodeList = ListPool<INode>.Get();
NodeUtils.DepthFirstCollectNodesFromNode(activeNodeList, this);
foreach (var node in activeNodeList.OfType<AbstractMaterialNode>())
{
//if (node is IGeneratesFunction)
// (node as IGeneratesFunction).GenerateNodeFunction(nodeFunction, mode);
node.GeneratePropertyBlock(shaderPropertiesVisitor, mode);
}
string texName = "_ExportTexture";
if (shaderPropertiesVisitor.GetConfiguredTexutres().Count > 0)
texName = shaderPropertiesVisitor.GetConfiguredTexutres()[0].name;
string template = File.ReadAllText(templateLocation);
var shaderName = "Hidden/ExportTexture/" + this.GetVariableNameForSlot(this.GetInputSlots<MaterialSlot>().First().id);
template = template.Replace("${ShaderName}", shaderName);
template = template.Replace("${ShaderPropertiesHeader}", shaderPropertiesVisitor.GetShaderString(0));
template = template.Replace("${ShaderTextureName}", texName);
configuredTextures = shaderPropertiesVisitor.GetConfiguredTexutres();
ListPool<INode>.Release(activeNodeList);
return Regex.Replace(template, @"\r\n|\n\r|\n|\r", Environment.NewLine);
*/
}
}
}
正在加载...
取消
保存