|
|
|
|
|
|
using UnityEngine; |
|
|
|
using UnityEditor; |
|
|
|
using UnityEngine.SceneManagement; |
|
|
|
using UnityEngine.Experimental.Rendering.HDPipeline; |
|
|
|
using UnityEngine; |
|
|
|
using UnityEngine.Experimental.Rendering.HDPipeline; |
|
|
|
using UnityObject = UnityEngine.Object; |
|
|
|
|
|
|
|
[UnityEditor.MenuItem("HDRenderPipeline/Add \"Additional Light-shadow Data\" (if not present)")] |
|
|
|
[MenuItem("HDRenderPipeline/Add \"Additional Light-shadow Data\" (if not present)")] |
|
|
|
Light[] lights = GameObject.FindObjectsOfType(typeof(Light)) as Light[]; |
|
|
|
var lights = UnityObject.FindObjectsOfType(typeof(Light)) as Light[]; |
|
|
|
foreach (Light light in lights) |
|
|
|
foreach (var light in lights) |
|
|
|
{ |
|
|
|
} |
|
|
|
{ |
|
|
|
} |
|
|
|
[UnityEditor.MenuItem("HDRenderPipeline/Add \"Additional Camera Data\" (if not present)")] |
|
|
|
[MenuItem("HDRenderPipeline/Add \"Additional Camera Data\" (if not present)")] |
|
|
|
Camera[] cameras = GameObject.FindObjectsOfType(typeof(Camera)) as Camera[]; |
|
|
|
var cameras = UnityObject.FindObjectsOfType(typeof(Camera)) as Camera[]; |
|
|
|
foreach (Camera camera in cameras) |
|
|
|
foreach (var camera in cameras) |
|
|
|
{ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
Object[] materials = Resources.FindObjectsOfTypeAll<Material>(); |
|
|
|
foreach (Object obj in materials) |
|
|
|
var materials = Resources.FindObjectsOfTypeAll<Material>(); |
|
|
|
|
|
|
|
foreach (var mat in materials) |
|
|
|
Material mat = obj as Material; |
|
|
|
if (mat.shader.name == "HDRenderPipeline/LayeredLit" || mat.shader.name == "HDRenderPipeline/LayeredLitTessellation") |
|
|
|
{ |
|
|
|
LayeredLitGUI.SynchronizeAllLayers(mat); |
|
|
|
|
|
|
|
|
|
|
static void RemoveMaterialKeywords(Material material) |
|
|
|
{ |
|
|
|
string[] keywordsToRemove = material.shaderKeywords; |
|
|
|
foreach (var keyword in keywordsToRemove) |
|
|
|
{ |
|
|
|
foreach (var keyword in material.shaderKeywords) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// The goal of this script is to help maintenance of data that have already been produced but need to update to the latest shader code change.
|
|
|
|
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
Object[] materials = Resources.FindObjectsOfTypeAll<Material>(); |
|
|
|
var materials = Resources.FindObjectsOfTypeAll<Material>(); |
|
|
|
|
|
|
|
Material mat = materials[i] as Material; |
|
|
|
var mat = materials[i]; |
|
|
|
|
|
|
|
EditorUtility.DisplayProgressBar( |
|
|
|
"Setup materials Keywords...", |
|
|
|
|
|
|
[MenuItem("HDRenderPipeline/Test/Remove tessellation materials (not reversible)")] |
|
|
|
static void RemoveTessellationMaterials() |
|
|
|
{ |
|
|
|
Object[] materials = Resources.FindObjectsOfTypeAll<Material>(); |
|
|
|
var materials = Resources.FindObjectsOfTypeAll<Material>(); |
|
|
|
Shader litShader = Shader.Find("HDRenderPipeline/Lit"); |
|
|
|
Shader layeredLitShader = Shader.Find("HDRenderPipeline/LayeredLit"); |
|
|
|
var litShader = Shader.Find("HDRenderPipeline/Lit"); |
|
|
|
var layeredLitShader = Shader.Find("HDRenderPipeline/LayeredLit"); |
|
|
|
foreach (Object obj in materials) |
|
|
|
foreach (var mat in materials) |
|
|
|
Material mat = obj as Material; |
|
|
|
if (mat.shader.name == "HDRenderPipeline/LitTessellation") |
|
|
|
{ |
|
|
|
mat.shader = litShader; |
|
|
|
|
|
|
[MenuItem("HDRenderPipeline/Export Sky to Image")] |
|
|
|
static void ExportSkyToImage() |
|
|
|
{ |
|
|
|
HDRenderPipeline renderpipeline = UnityEngine.Experimental.Rendering.RenderPipelineManager.currentPipeline as HDRenderPipeline; |
|
|
|
if(renderpipeline == null) |
|
|
|
var renderpipeline = RenderPipelineManager.currentPipeline as HDRenderPipeline; |
|
|
|
if (renderpipeline == null) |
|
|
|
Texture2D result = renderpipeline.ExportSkyToTexture(); |
|
|
|
if(result == null) |
|
|
|
{ |
|
|
|
var result = renderpipeline.ExportSkyToTexture(); |
|
|
|
if (result == null) |
|
|
|
} |
|
|
|
byte[] bytes = null; |
|
|
|
bytes = result.EncodeToEXR(Texture2D.EXRFlags.CompressZIP); |
|
|
|
Object.DestroyImmediate(result); |
|
|
|
byte[] bytes = result.EncodeToEXR(Texture2D.EXRFlags.CompressZIP); |
|
|
|
UnityObject.DestroyImmediate(result); |
|
|
|
|
|
|
|
string assetPath = EditorUtility.SaveFilePanel("Export Sky", "Assets", "SkyExport", "exr"); |
|
|
|
if (!string.IsNullOrEmpty(assetPath)) |
|
|
|
|
|
|
[MenuItem("GameObject/HD Render Pipeline/Scene Settings", false, 10)] |
|
|
|
static void CreateCustomGameObject(MenuCommand menuCommand) |
|
|
|
{ |
|
|
|
GameObject sceneSettings = new GameObject("Scene Settings"); |
|
|
|
var sceneSettings = new GameObject("Scene Settings"); |
|
|
|
GameObjectUtility.SetParentAndAlign(sceneSettings, menuCommand.context as GameObject); |
|
|
|
Undo.RegisterCreatedObjectUndo(sceneSettings, "Create " + sceneSettings.name); |
|
|
|
Selection.activeObject = sceneSettings; |
|
|
|
|
|
|
class DoCreateNewAsset<AssetType> : UnityEditor.ProjectWindowCallback.EndNameEditAction where AssetType : ScriptableObject |
|
|
|
class DoCreateNewAsset<TAssetType> : ProjectWindowCallback.EndNameEditAction where TAssetType : ScriptableObject |
|
|
|
var newAsset = ScriptableObject.CreateInstance<AssetType>(); |
|
|
|
newAsset.name = System.IO.Path.GetFileName(pathName); |
|
|
|
var newAsset = CreateInstance<TAssetType>(); |
|
|
|
newAsset.name = Path.GetFileName(pathName); |
|
|
|
AssetDatabase.CreateAsset(newAsset, pathName); |
|
|
|
ProjectWindowUtil.ShowCreatedAsset(newAsset); |
|
|
|
} |
|
|
|
|
|
|
class DoCreateNewAssetHDRISkySettings : DoCreateNewAsset<HDRISkySettings> {} |
|
|
|
class DoCreateNewAssetProceduralSkySettings : DoCreateNewAsset<ProceduralSkySettings> {} |
|
|
|
class DoCreateNewAssetSSAOSettings : DoCreateNewAsset<ScreenSpaceAmbientOcclusionSettings> {} |
|
|
|
|
|
|
|
Texture2D icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<DoCreateNewAssetSSSProfile>(), "New SSS Profile.asset", icon, null); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
Texture2D icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<DoCreateNewAssetCommonSettings>(), "New CommonSettings.asset", icon, null); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
Texture2D icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<DoCreateNewAssetHDRISkySettings>(), "New HDRISkySettings.asset", icon, null); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
Texture2D icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<DoCreateNewAssetProceduralSkySettings>(), "New ProceduralSkySettings.asset", icon, null); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
Texture2D icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
var icon = EditorGUIUtility.FindTexture("ScriptableObject Icon"); |
|
|
|
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<DoCreateNewAssetSSAOSettings>(), "New AmbientOcclusionSettings.asset", icon, null); |
|
|
|
} |
|
|
|
} |