Matt Dean
7 年前
当前提交
b14c1f98
共有 11 个文件被更改,包括 365 次插入 和 22 次删除
-
2MaterialGraphProject/Assets/NewNodes/Editor/Keep/ColorBalanceNode.cs
-
26MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/CodeFunctionNode.cs
-
2MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Controls/PropertyControl.cs
-
80MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/PreviewManager.cs
-
9MaterialGraphProject/Assets/UnityShaderEditor/Editor/Resources/Styles/MaterialGraph.uss
-
29MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Graphs/ColorMaterialSlot.cs
-
3MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Graphs/ColorMaterialSlot.cs.meta
-
202MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/PreviewSceneResources.cs
-
3MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/PreviewSceneResources.cs.meta
-
28MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/Slots/ColorSlotControlView.cs
-
3MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Views/Slots/ColorSlotControlView.cs.meta
|
|||
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); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 89d670f0d46a47d08be1209a78765617 |
|||
timeCreated: 1510659340 |
|
|||
using System; |
|||
using UnityEditor.SceneManagement; |
|||
using UnityEngine; |
|||
using UnityEngine.SceneManagement; |
|||
|
|||
namespace UnityEditor.ShaderGraph.Drawing |
|||
{ |
|||
public class PreviewSceneResources : IDisposable |
|||
{ |
|||
readonly Scene m_Scene; |
|||
static Mesh s_Quad; |
|||
Camera m_Camera; |
|||
public Light light0 { get; private set; } |
|||
public Light light1 { get; private set; } |
|||
|
|||
Material m_CheckerboardMaterial; |
|||
|
|||
static readonly Mesh[] s_Meshes = { null, null, null, null, null }; |
|||
static readonly GUIContent[] s_MeshIcons = { null, null, null, null, null }; |
|||
static readonly GUIContent[] s_LightIcons = { null, null }; |
|||
static readonly GUIContent[] s_TimeIcons = { null, null }; |
|||
|
|||
static GameObject CreateLight() |
|||
{ |
|||
GameObject lightGO = EditorUtility.CreateGameObjectWithHideFlags("PreRenderLight", HideFlags.HideAndDontSave, typeof(Light)); |
|||
var light = lightGO.GetComponent<Light>(); |
|||
light.type = LightType.Directional; |
|||
light.intensity = 1.0f; |
|||
light.enabled = false; |
|||
return lightGO; |
|||
} |
|||
|
|||
public PreviewSceneResources() |
|||
{ |
|||
m_Scene = EditorSceneManager.NewPreviewScene(); |
|||
var camGO = EditorUtility.CreateGameObjectWithHideFlags("Preview Scene Camera", HideFlags.HideAndDontSave, typeof(Camera)); |
|||
SceneManager.MoveGameObjectToScene(camGO, m_Scene); |
|||
|
|||
m_Camera = camGO.GetComponent<Camera>(); |
|||
EditorUtility.SetCameraAnimateMaterials(camera, true); |
|||
|
|||
camera.cameraType = CameraType.Preview; |
|||
camera.enabled = false; |
|||
camera.clearFlags = CameraClearFlags.Depth; |
|||
camera.fieldOfView = 15; |
|||
camera.farClipPlane = 10.0f; |
|||
camera.nearClipPlane = 2.0f; |
|||
camera.backgroundColor = new Color(49.0f / 255.0f, 49.0f / 255.0f, 49.0f / 255.0f, 1.0f); |
|||
|
|||
// Explicitly use forward rendering for all previews
|
|||
// (deferred fails when generating some static previews at editor launch; and we never want
|
|||
// vertex lit previews if that is chosen in the player settings)
|
|||
camera.renderingPath = RenderingPath.Forward; |
|||
camera.useOcclusionCulling = false; |
|||
camera.scene = m_Scene; |
|||
|
|||
var l0 = CreateLight(); |
|||
SceneManager.MoveGameObjectToScene(l0, m_Scene); |
|||
|
|||
//previewScene.AddGameObject(l0);
|
|||
light0 = l0.GetComponent<Light>(); |
|||
|
|||
var l1 = CreateLight(); |
|||
SceneManager.MoveGameObjectToScene(l1, m_Scene); |
|||
|
|||
//previewScene.AddGameObject(l1);
|
|||
light1 = l1.GetComponent<Light>(); |
|||
|
|||
light0.color = new Color(0.769f, 0.769f, 0.769f, 1); // SceneView.kSceneViewFrontLight
|
|||
light1.transform.rotation = Quaternion.Euler(340, 218, 177); |
|||
light1.color = new Color(.4f, .4f, .45f, 0f) * .7f; |
|||
|
|||
m_CheckerboardMaterial = new Material(Shader.Find("Hidden/Checkerboard")); |
|||
checkerboardMaterial.shader.hideFlags = HideFlags.HideAndDontSave; |
|||
checkerboardMaterial.hideFlags = HideFlags.HideAndDontSave; |
|||
|
|||
if (s_Meshes[0] == null) |
|||
{ |
|||
var handleGo = (GameObject)EditorGUIUtility.LoadRequired("Previews/PreviewMaterials.fbx"); |
|||
|
|||
// @TODO: temp workaround to make it not render in the scene
|
|||
handleGo.SetActive(false); |
|||
foreach (Transform t in handleGo.transform) |
|||
{ |
|||
var meshFilter = t.GetComponent<MeshFilter>(); |
|||
switch (t.name) |
|||
{ |
|||
case "sphere": |
|||
s_Meshes[0] = meshFilter.sharedMesh; |
|||
break; |
|||
case "cube": |
|||
s_Meshes[1] = meshFilter.sharedMesh; |
|||
break; |
|||
case "cylinder": |
|||
s_Meshes[2] = meshFilter.sharedMesh; |
|||
break; |
|||
case "torus": |
|||
s_Meshes[3] = meshFilter.sharedMesh; |
|||
break; |
|||
default: |
|||
Debug.Log("Something is wrong, weird object found: " + t.name); |
|||
break; |
|||
} |
|||
} |
|||
|
|||
s_MeshIcons[0] = EditorGUIUtility.IconContent("PreMatSphere"); |
|||
s_MeshIcons[1] = EditorGUIUtility.IconContent("PreMatCube"); |
|||
s_MeshIcons[2] = EditorGUIUtility.IconContent("PreMatCylinder"); |
|||
s_MeshIcons[3] = EditorGUIUtility.IconContent("PreMatTorus"); |
|||
s_MeshIcons[4] = EditorGUIUtility.IconContent("PreMatQuad"); |
|||
|
|||
s_LightIcons[0] = EditorGUIUtility.IconContent("PreMatLight0"); |
|||
s_LightIcons[1] = EditorGUIUtility.IconContent("PreMatLight1"); |
|||
|
|||
s_TimeIcons[0] = EditorGUIUtility.IconContent("PlayButton"); |
|||
s_TimeIcons[1] = EditorGUIUtility.IconContent("PauseButton"); |
|||
|
|||
Mesh quadMesh = Resources.GetBuiltinResource(typeof(Mesh), "Quad.fbx") as Mesh; |
|||
s_Meshes[4] = quadMesh; |
|||
} |
|||
|
|||
if (s_Quad == null) |
|||
{ |
|||
var vertices = new[] |
|||
{ |
|||
new Vector3(-1f, -1f, 0f), |
|||
new Vector3(1f, 1f, 0f), |
|||
new Vector3(1f, -1f, 0f), |
|||
new Vector3(-1f, 1f, 0f) |
|||
}; |
|||
|
|||
var uvs = new[] |
|||
{ |
|||
new Vector2(0f, 0f), |
|||
new Vector2(1f, 1f), |
|||
new Vector2(1f, 0f), |
|||
new Vector2(0f, 1f) |
|||
}; |
|||
|
|||
var indices = new[] { 0, 1, 2, 1, 0, 3 }; |
|||
|
|||
s_Quad = new Mesh |
|||
{ |
|||
vertices = vertices, |
|||
uv = uvs, |
|||
triangles = indices |
|||
}; |
|||
s_Quad.RecalculateNormals(); |
|||
s_Quad.RecalculateBounds(); |
|||
} |
|||
} |
|||
|
|||
public Mesh sphere |
|||
{ |
|||
get { return s_Meshes[0]; } |
|||
} |
|||
|
|||
public Mesh quad |
|||
{ |
|||
get { return s_Quad; } |
|||
} |
|||
|
|||
public Material checkerboardMaterial |
|||
{ |
|||
get { return m_CheckerboardMaterial; } |
|||
} |
|||
|
|||
public Camera camera |
|||
{ |
|||
get { return m_Camera; } |
|||
} |
|||
|
|||
public void Dispose() |
|||
{ |
|||
if (light0 != null) |
|||
{ |
|||
UnityEngine.Object.DestroyImmediate(light0.gameObject); |
|||
light0 = null; |
|||
} |
|||
|
|||
if (light1 != null) |
|||
{ |
|||
UnityEngine.Object.DestroyImmediate(light1.gameObject); |
|||
light1 = null; |
|||
} |
|||
|
|||
if (camera != null) |
|||
{ |
|||
UnityEngine.Object.DestroyImmediate(camera.gameObject); |
|||
m_Camera = null; |
|||
} |
|||
|
|||
if (checkerboardMaterial != null) |
|||
{ |
|||
UnityEngine.Object.DestroyImmediate(checkerboardMaterial); |
|||
m_CheckerboardMaterial = null; |
|||
} |
|||
|
|||
EditorSceneManager.ClosePreviewScene(m_Scene); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 37873c3b010e40d1ac1e6aace3c0fb10 |
|||
timeCreated: 1510662606 |
|
|||
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); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 07332ea5e51a4bd3b6fb63e8e07cc30b |
|||
timeCreated: 1510659384 |
撰写
预览
正在加载...
取消
保存
Reference in new issue