|
|
|
|
|
|
if (masterRenderData.shaderData != null && m_DirtyPreviews.Contains(masterRenderData.shaderData.node.guid)) |
|
|
|
m_RenderList3D.Add(masterRenderData); |
|
|
|
|
|
|
|
m_RenderList3D.Sort((data1, data2) => data1.shaderData.shader.GetInstanceID().CompareTo(data2.shaderData.shader.GetInstanceID())); |
|
|
|
m_RenderList2D.Sort((data1, data2) => data1.shaderData.shader.GetInstanceID().CompareTo(data2.shaderData.shader.GetInstanceID())); |
|
|
|
|
|
|
|
|
|
|
|
m_SceneResources.light0.enabled = true; |
|
|
|
m_SceneResources.light0.intensity = 1.0f; |
|
|
|
m_SceneResources.light0.transform.rotation = Quaternion.Euler(50f, 50f, 0); |
|
|
|
|
|
|
m_SceneResources.camera.transform.rotation = Quaternion.identity; |
|
|
|
m_SceneResources.camera.orthographicSize = 1; |
|
|
|
m_SceneResources.camera.orthographic = true; |
|
|
|
m_RenderList2D.Sort((data1, data2) => data1.shaderData.shader.GetInstanceID().CompareTo(data2.shaderData.shader.GetInstanceID())); |
|
|
|
|
|
|
|
foreach (var renderData in m_RenderList2D) |
|
|
|
{ |
|
|
|
int outputId; |
|
|
|
|
|
|
m_SceneResources.camera.transform.position = -Vector3.forward * 5; |
|
|
|
m_SceneResources.camera.transform.rotation = Quaternion.identity; |
|
|
|
m_SceneResources.camera.orthographic = false; |
|
|
|
m_RenderList3D.Sort((data1, data2) => data1.shaderData.shader.GetInstanceID().CompareTo(data2.shaderData.shader.GetInstanceID())); |
|
|
|
|
|
|
|
foreach (var renderData in m_RenderList3D) |
|
|
|
{ |
|
|
|
int outputId; |
|
|
|
|
|
|
RenderTexture.active = renderData.renderTexture; |
|
|
|
GL.Clear(true, true, Color.black); |
|
|
|
Graphics.Blit(Texture2D.whiteTexture, renderData.renderTexture, m_SceneResources.checkerboardMaterial); |
|
|
|
var mesh = renderData.mesh ?? m_SceneResources.sphere; |
|
|
|
var mesh = (renderData == masterRenderData && m_Graph.previewMesh) ? m_Graph.previewMesh : m_SceneResources.sphere; |
|
|
|
Graphics.DrawMesh(mesh, Matrix4x4.TRS(-mesh.bounds.center, Quaternion.identity, Vector3.one), m_PreviewMaterial, 1, m_SceneResources.camera, 0, m_PreviewPropertyBlock, ShadowCastingMode.Off, false, null, false); |
|
|
|
var previousUseSRP = Unsupported.useScriptableRenderPipeline; |
|
|
|
Unsupported.useScriptableRenderPipeline = renderData.shaderData.node is IMasterNode; |
|
|
|
|
|
|
public class PreviewRenderData |
|
|
|
{ |
|
|
|
public PreviewShaderData shaderData { get; set; } |
|
|
|
public Mesh mesh { get; set; } |
|
|
|
public RenderTexture renderTexture { get; set; } |
|
|
|
public Texture texture { get; set; } |
|
|
|
public OnPreviewChanged onPreviewChanged; |
|
|
|