portals and dash. Also a bit of terrain building and level design
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa68d3b2f494cdd49bc2ac0d4d02fe4f
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,150 @@
|
||||
#if GRIFFIN
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Pinwheel.Griffin;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Callbacks;
|
||||
using System.Reflection;
|
||||
using TerrainMaterialTemplate = Pinwheel.Griffin.GRuntimeSettings.TerrainRenderingSettings.TerrainMaterialTemplate;
|
||||
|
||||
namespace Pinwheel.Griffin.URP
|
||||
{
|
||||
public static class GGriffinUrpInstaller
|
||||
{
|
||||
[DidReloadScripts]
|
||||
private static void HandleAutomaticInstallAndUpgrade()
|
||||
{
|
||||
string key = GEditorCommon.GetProjectRelatedEditorPrefsKey("polaris-urp-package-imported-0");
|
||||
bool isFirstImport = !EditorPrefs.HasKey(key);
|
||||
|
||||
if (isFirstImport)
|
||||
{
|
||||
EditorApplication.update += () =>
|
||||
{
|
||||
Install();
|
||||
UpgradeTerrainMaterialInProject();
|
||||
Debug.Log("POLARIS: Universal Render Pipeline shaders installed!");
|
||||
EditorApplication.update = null;
|
||||
EditorPrefs.SetBool(key, true);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public static void Install()
|
||||
{
|
||||
GGriffinUrpResources resources = GGriffinUrpResources.Instance;
|
||||
if (resources == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
List<TerrainMaterialTemplate> terrainMaterialTemplates = new List<TerrainMaterialTemplate>();
|
||||
terrainMaterialTemplates.Add(new TerrainMaterialTemplate()
|
||||
{
|
||||
lightingModel = GLightingModel.PBR,
|
||||
texturingModel = GTexturingModel.Splat,
|
||||
splatsModel = GSplatsModel.Splats4,
|
||||
material = resources.Terrain4SplatsMaterial
|
||||
});
|
||||
|
||||
terrainMaterialTemplates.Add(new TerrainMaterialTemplate()
|
||||
{
|
||||
lightingModel = GLightingModel.PBR,
|
||||
texturingModel = GTexturingModel.Splat,
|
||||
splatsModel = GSplatsModel.Splats4Normals4,
|
||||
material = resources.Terrain4Splats4NormalsMaterial
|
||||
});
|
||||
|
||||
terrainMaterialTemplates.Add(new TerrainMaterialTemplate()
|
||||
{
|
||||
lightingModel = GLightingModel.PBR,
|
||||
texturingModel = GTexturingModel.Splat,
|
||||
splatsModel = GSplatsModel.Splats8,
|
||||
material = resources.Terrain8SplatsMaterial
|
||||
});
|
||||
|
||||
terrainMaterialTemplates.Add(new TerrainMaterialTemplate()
|
||||
{
|
||||
lightingModel = GLightingModel.PBR,
|
||||
texturingModel = GTexturingModel.GradientLookup,
|
||||
material = resources.TerrainGradientLookupMaterial
|
||||
});
|
||||
|
||||
terrainMaterialTemplates.Add(new TerrainMaterialTemplate()
|
||||
{
|
||||
lightingModel = GLightingModel.PBR,
|
||||
texturingModel = GTexturingModel.VertexColor,
|
||||
material = resources.TerrainVertexColorMaterial
|
||||
});
|
||||
|
||||
terrainMaterialTemplates.Add(new TerrainMaterialTemplate()
|
||||
{
|
||||
lightingModel = GLightingModel.PBR,
|
||||
texturingModel = GTexturingModel.ColorMap,
|
||||
material = resources.TerrainColorMapMaterial
|
||||
});
|
||||
|
||||
GRuntimeSettings.Instance.terrainRendering.universalRpMaterials = terrainMaterialTemplates;
|
||||
GRuntimeSettings.Instance.foliageRendering.urpGrassMaterial = resources.GrassMaterial;
|
||||
GRuntimeSettings.Instance.foliageRendering.urpGrassBillboardMaterial = resources.GrassBillboardMaterial;
|
||||
GRuntimeSettings.Instance.foliageRendering.urpGrassInteractiveMaterial = resources.GrassInteractiveMaterial;
|
||||
GRuntimeSettings.Instance.foliageRendering.urpTreeBillboardMaterial = resources.TreeBillboardMaterial;
|
||||
|
||||
EditorUtility.SetDirty(GRuntimeSettings.Instance);
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
public static void UpgradeTerrainMaterialInProject()
|
||||
{
|
||||
if (GCommon.CurrentRenderPipeline != GRenderPipelineType.Universal)
|
||||
{
|
||||
return;
|
||||
}
|
||||
string[] guid = AssetDatabase.FindAssets("t:GTerrainData");
|
||||
for (int i = 0; i < guid.Length; ++i)
|
||||
{
|
||||
string path = AssetDatabase.GUIDToAssetPath(guid[i]);
|
||||
GTerrainData data = AssetDatabase.LoadAssetAtPath<GTerrainData>(path);
|
||||
Material mat = data.Shading.CustomMaterial;
|
||||
if (mat != null)
|
||||
{
|
||||
if (UpgradeMaterial(mat))
|
||||
{
|
||||
data.Shading.UpdateMaterials();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool UpgradeMaterial(Material mat)
|
||||
{
|
||||
if (GCommon.CurrentRenderPipeline != GRenderPipelineType.Universal)
|
||||
return false;
|
||||
|
||||
Shader currentShader = mat.shader;
|
||||
TerrainMaterialTemplate template;
|
||||
bool found = GRuntimeSettings.Instance.terrainRendering.FindMaterialTemplate(
|
||||
currentShader,
|
||||
GRenderPipelineType.Builtin,
|
||||
out template);
|
||||
if (!found)
|
||||
return false;
|
||||
|
||||
Material urpMat = GRuntimeSettings.Instance.terrainRendering.GetClonedMaterial(
|
||||
GRenderPipelineType.Universal,
|
||||
GLightingModel.PBR,
|
||||
template.texturingModel,
|
||||
template.splatsModel);
|
||||
if (urpMat != null)
|
||||
{
|
||||
mat.shader = urpMat.shader;
|
||||
GUtilities.DestroyObject(urpMat);
|
||||
Debug.Log(string.Format("POLARIS: Upgrade material {0} to URP succeeded.", mat.name));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 14f5c5cc208e67649919d77d841991c5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,165 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Pinwheel.Griffin.URP
|
||||
{
|
||||
//[CreateAssetMenu(menuName = "Griffin/URP Resources")]
|
||||
public class GGriffinUrpResources : ScriptableObject
|
||||
{
|
||||
private static GGriffinUrpResources instance;
|
||||
public static GGriffinUrpResources Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = Resources.Load<GGriffinUrpResources>("GriffinUrpResources");
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
[Header("Terrain Material")]
|
||||
[SerializeField]
|
||||
private Material terrain4SplatsMaterial;
|
||||
public Material Terrain4SplatsMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return terrain4SplatsMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
terrain4SplatsMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material terrain4Splats4NormalsMaterial;
|
||||
public Material Terrain4Splats4NormalsMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return terrain4Splats4NormalsMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
terrain4Splats4NormalsMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material terrain8SplatsMaterial;
|
||||
public Material Terrain8SplatsMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return terrain8SplatsMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
terrain8SplatsMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material terrainGradientLookupMaterial;
|
||||
public Material TerrainGradientLookupMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return terrainGradientLookupMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
terrainGradientLookupMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material terrainVertexColorMaterial;
|
||||
public Material TerrainVertexColorMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return terrainVertexColorMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
terrainVertexColorMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material terrainColorMapMaterial;
|
||||
public Material TerrainColorMapMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return terrainColorMapMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
terrainColorMapMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[Header("Foliage Material")]
|
||||
[SerializeField]
|
||||
private Material grassMaterial;
|
||||
public Material GrassMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return grassMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
grassMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material grassBillboardMaterial;
|
||||
public Material GrassBillboardMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return grassBillboardMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
grassBillboardMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material grassInteractiveMaterial;
|
||||
public Material GrassInteractiveMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return grassInteractiveMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
grassInteractiveMaterial = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
private Material treeBillboardMaterial;
|
||||
public Material TreeBillboardMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
return treeBillboardMaterial;
|
||||
}
|
||||
set
|
||||
{
|
||||
treeBillboardMaterial = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc2a1cc0d83caa64eb8a04447b0eff01
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,70 @@
|
||||
#if GRIFFIN && UNITY_EDITOR
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor;
|
||||
using Pinwheel.Griffin;
|
||||
using Pinwheel.Griffin.URP;
|
||||
|
||||
namespace Pinwheel.Griffin.URP.GriffinExtension
|
||||
{
|
||||
public static class GriffinUrpSupport
|
||||
{
|
||||
public static string GetExtensionName()
|
||||
{
|
||||
return "Universal Render Pipeline Support";
|
||||
}
|
||||
|
||||
public static string GetPublisherName()
|
||||
{
|
||||
return "Pinwheel Studio";
|
||||
}
|
||||
|
||||
public static string GetDescription()
|
||||
{
|
||||
return "Adding support for URP.\n" +
|
||||
"Requires Unity 2019.3 or above.";
|
||||
}
|
||||
|
||||
public static string GetVersion()
|
||||
{
|
||||
return "2020.1";
|
||||
}
|
||||
|
||||
public static void OpenSupportLink()
|
||||
{
|
||||
GEditorCommon.OpenEmailEditor(
|
||||
GCommon.SUPPORT_EMAIL,
|
||||
"[Polaris V2] LWRP Support",
|
||||
"YOUR_MESSAGE_HERE");
|
||||
}
|
||||
|
||||
public static void OnGUI()
|
||||
{
|
||||
bool isUnity20193orNewer = false;
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
isUnity20193orNewer = true;
|
||||
#endif
|
||||
|
||||
GUI.enabled = isUnity20193orNewer;
|
||||
if (GUILayout.Button("Install"))
|
||||
{
|
||||
GGriffinUrpInstaller.Install();
|
||||
}
|
||||
|
||||
GUI.enabled = isUnity20193orNewer && GCommon.CurrentRenderPipeline == GRenderPipelineType.Universal;
|
||||
string upgradeButtonLabel =
|
||||
GCommon.CurrentRenderPipeline == GRenderPipelineType.Universal ?
|
||||
"Upgrade Terrain Materials" :
|
||||
"Enable URP to upgrade terrain materials.";
|
||||
|
||||
if (GUILayout.Button(upgradeButtonLabel))
|
||||
{
|
||||
GGriffinUrpInstaller.UpgradeTerrainMaterialInProject();
|
||||
}
|
||||
|
||||
GUI.enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 75990f54f4e88224181f33efe43ee481
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"reference": "GUID:5d7906c0134269149b5691f96c01c162"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 82ee79896e95a2a45b75e0838166bdd1
|
||||
AssemblyDefinitionReferenceImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user