浏览代码

[shader graph]Tidy up generation of shaders / preview.

/main
Tim Cooper 9 年前
当前提交
9b51c881
共有 3 个文件被更改,包括 18 次插入21 次删除
  1. 2
      UnityProject/Assets/UnityShaderEditor/Editor/Source/BaseMaterialGraph.cs
  2. 28
      UnityProject/Assets/UnityShaderEditor/Editor/Source/Nodes/BaseMaterialNode.cs
  3. 9
      UnityProject/Assets/UnityShaderEditor/Editor/Source/Nodes/PixelShaderNode.cs

2
UnityProject/Assets/UnityShaderEditor/Editor/Source/BaseMaterialGraph.cs


foreach (var node in nodes)
{
var pNode = node as BaseMaterialNode;
if (pNode != null)
if (pNode != null && pNode.hasPreview)
{
MaterialWindow.DebugMaterialGraph("Updating preview Properties on Node: " + pNode);
pNode.UpdatePreviewProperties();

28
UnityProject/Assets/UnityShaderEditor/Editor/Source/Nodes/BaseMaterialNode.cs


private const int kPreviewHeight = 64;
[NonSerialized]
private UnityEngine.Material m_Material;
private Material m_Material;
[SerializeField]
private List<SlotDefaultValue> m_SlotDefaultValues;

}
}
public UnityEngine.Material previewMaterial
public Material previewMaterial
m_Material = new UnityEngine.Material(defaultPreviewShader) {hideFlags = HideFlags.DontSave};
m_Material = new Material(defaultPreviewShader) {hideFlags = HideFlags.DontSave};
UpdatePreviewProperties();
}
return m_Material;

#region Previews
public virtual bool UpdatePreviewMaterial()
{
MaterialWindow.DebugMaterialGraph("RecreateShaderAndMaterial : " + name + "_" + GetInstanceID());
InternalUpdatePreviewShader(resultShader);
return true;
}
protected void InternalUpdatePreviewShader(string resultShader)
{
MaterialWindow.DebugMaterialGraph("RecreateShaderAndMaterial : " + name + "_" + GetInstanceID());
UpdatePreviewProperties();
return true;
}
// this function looks at all the nodes that have a

return previewUtil.EndPreview();
}
private void SetPreviewMaterialProperty(PreviewProperty previewProperty)
private static void SetPreviewMaterialProperty(PreviewProperty previewProperty, Material mat)
previewMaterial.SetTexture(previewProperty.m_Name, previewProperty.m_Texture);
mat.SetTexture(previewProperty.m_Name, previewProperty.m_Texture);
previewMaterial.SetColor(previewProperty.m_Name, previewProperty.m_Color);
mat.SetColor(previewProperty.m_Name, previewProperty.m_Color);
previewMaterial.SetVector(previewProperty.m_Name, previewProperty.m_Vector4);
mat.SetVector(previewProperty.m_Name, previewProperty.m_Vector4);
break;
}
}

node.CollectPreviewMaterialProperties(pList);
foreach (var prop in pList)
SetPreviewMaterialProperty (prop);
SetPreviewMaterialProperty (prop, previewMaterial);
}
#endregion

9
UnityProject/Assets/UnityShaderEditor/Editor/Source/Nodes/PixelShaderNode.cs


public override bool UpdatePreviewMaterial()
{
Dictionary<string, Texture> defaultTextures;
Dictionary<string, Texture> defaultTextures;
if (previewMaterial.shader != defaultPreviewShader)
DestroyImmediate(previewMaterial.shader, true);
previewMaterial.shader = ShaderUtil.CreateShaderAsset(resultShader);
EditorMaterialUtility.SetShaderDefaults(previewMaterial.shader, defaultTextures.Keys.ToArray(), defaultTextures.Values.ToArray());
previewMaterial.shader.hideFlags = HideFlags.DontSave;
InternalUpdatePreviewShader(resultShader);
return true;
}
}
正在加载...
取消
保存