|
|
|
|
|
|
_8x = 8 |
|
|
|
} |
|
|
|
|
|
|
|
public enum DefaultMaterialType |
|
|
|
{ |
|
|
|
Standard = 0, |
|
|
|
Particle, |
|
|
|
Terrain, |
|
|
|
UnityBuiltinDefault |
|
|
|
} |
|
|
|
|
|
|
|
private Shader m_DefaultShader; |
|
|
|
[SerializeField] private float kAssetVersion = 1.0f; |
|
|
|
[SerializeField] private int kAssetVersion = 2; |
|
|
|
[SerializeField] private int m_MaxPixelLights = 4; |
|
|
|
[SerializeField] private bool m_SupportsVertexLight = false; |
|
|
|
[SerializeField] private bool m_RequireDepthTexture = false; |
|
|
|
|
|
|
[SerializeField] private Vector3 m_Cascade4Split = new Vector3(0.067f, 0.2f, 0.467f); |
|
|
|
|
|
|
|
// Resources
|
|
|
|
[SerializeField] private Shader m_DefaultShader; |
|
|
|
[SerializeField] private LightweightPipelineResource m_ResourceAsset; |
|
|
|
private LightweightPipelineResource m_ResourceAsset; |
|
|
|
|
|
|
|
[MenuItem("Assets/Create/Render Pipeline/Lightweight/Pipeline Asset", priority = CoreUtils.assetCreateMenuPriority1)] |
|
|
|
static void CreateLightweightPipeline() |
|
|
|
|
|
|
public override void Action(int instanceId, string pathName, string resourceFile) |
|
|
|
{ |
|
|
|
var instance = CreateInstance<LightweightPipelineAsset>(); |
|
|
|
|
|
|
|
string[] guids = AssetDatabase.FindAssets("LightweightPipelineResource t:scriptableobject", m_SearchPaths); |
|
|
|
LightweightPipelineResource resourceAsset = null; |
|
|
|
foreach (string guid in guids) |
|
|
|
{ |
|
|
|
string path = AssetDatabase.GUIDToAssetPath(guid); |
|
|
|
resourceAsset = AssetDatabase.LoadAssetAtPath<LightweightPipelineResource>(path); |
|
|
|
if (resourceAsset != null) |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
// There's currently an issue that prevents FindAssets from find resources withing the package folder.
|
|
|
|
if (resourceAsset == null) |
|
|
|
{ |
|
|
|
string path = m_SearchPaths[PACKAGE_MANAGER_PATH_INDEX] + "/LWRP/Data/LightweightPipelineResource.asset"; |
|
|
|
resourceAsset = AssetDatabase.LoadAssetAtPath<LightweightPipelineResource>(path); |
|
|
|
} |
|
|
|
|
|
|
|
instance.m_ResourceAsset = resourceAsset; |
|
|
|
instance.m_DefaultShader = Shader.Find(LightweightShaderUtils.GetShaderPath(ShaderPathID.STANDARD_PBS)); |
|
|
|
instance.m_BlitShader = Shader.Find(LightweightShaderUtils.GetShaderPath(ShaderPathID.HIDDEN_BLIT)); |
|
|
|
instance.m_CopyDepthShader = Shader.Find(LightweightShaderUtils.GetShaderPath(ShaderPathID.HIDDEN_DEPTH_COPY)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void LoadResourceFile() |
|
|
|
{ |
|
|
|
string[] guids = AssetDatabase.FindAssets("LightweightPipelineResource t:scriptableobject", m_SearchPaths); |
|
|
|
LightweightPipelineResource resourceAsset = null; |
|
|
|
foreach (string guid in guids) |
|
|
|
{ |
|
|
|
string path = AssetDatabase.GUIDToAssetPath(guid); |
|
|
|
m_ResourceAsset = AssetDatabase.LoadAssetAtPath<LightweightPipelineResource>(path); |
|
|
|
if (m_ResourceAsset != null) |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
// There's currently an issue that prevents FindAssets from find resources withing the package folder.
|
|
|
|
if (m_ResourceAsset == null) |
|
|
|
{ |
|
|
|
string path = m_SearchPaths[PACKAGE_MANAGER_PATH_INDEX] + "/LWRP/Data/LightweightPipelineResource.asset"; |
|
|
|
m_ResourceAsset = AssetDatabase.LoadAssetAtPath<LightweightPipelineResource>(path); |
|
|
|
} |
|
|
|
} |
|
|
|
#endif
|
|
|
|
|
|
|
|
protected override IRenderPipeline InternalCreatePipeline() |
|
|
|
|
|
|
DestroyCreatedInstances(); |
|
|
|
} |
|
|
|
|
|
|
|
private Material GetMaterial(DefaultMaterialType materialType) |
|
|
|
{ |
|
|
|
#if UNITY_EDITOR
|
|
|
|
if (m_ResourceAsset == null) |
|
|
|
LoadResourceFile(); |
|
|
|
|
|
|
|
switch (materialType) |
|
|
|
{ |
|
|
|
case DefaultMaterialType.Standard: |
|
|
|
return m_ResourceAsset.DefaultMaterial; |
|
|
|
|
|
|
|
case DefaultMaterialType.Particle: |
|
|
|
return m_ResourceAsset.DefaultParticleMaterial; |
|
|
|
|
|
|
|
case DefaultMaterialType.Terrain: |
|
|
|
return m_ResourceAsset.DefaultTerrainMaterial; |
|
|
|
|
|
|
|
// Unity Builtin Default
|
|
|
|
default: |
|
|
|
return null; |
|
|
|
} |
|
|
|
#else
|
|
|
|
return null; |
|
|
|
#endif
|
|
|
|
} |
|
|
|
|
|
|
|
public bool AreShadowsEnabled() |
|
|
|
{ |
|
|
|
return ShadowSetting != ShadowType.NO_SHADOW; |
|
|
|
|
|
|
|
|
|
|
public override Material GetDefaultMaterial() |
|
|
|
{ |
|
|
|
#if UNITY_EDITOR
|
|
|
|
if (m_ResourceAsset != null) |
|
|
|
return m_ResourceAsset.DefaultMaterial; |
|
|
|
#endif
|
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.Standard); |
|
|
|
#if UNITY_EDITOR
|
|
|
|
if (m_ResourceAsset != null) |
|
|
|
return m_ResourceAsset.DefaultParticleMaterial; |
|
|
|
#endif
|
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.Particle); |
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.UnityBuiltinDefault); |
|
|
|
#if UNITY_EDITOR
|
|
|
|
if (m_ResourceAsset != null) |
|
|
|
return m_ResourceAsset.DefaultTerrainMaterial; |
|
|
|
#endif
|
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.Terrain); |
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.UnityBuiltinDefault); |
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.UnityBuiltinDefault); |
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.UnityBuiltinDefault); |
|
|
|
return null; |
|
|
|
return GetMaterial(DefaultMaterialType.UnityBuiltinDefault); |
|
|
|
if (m_DefaultShader == null) |
|
|
|
m_DefaultShader = Shader.Find(LightweightShaderUtils.GetShaderPath(ShaderPathID.STANDARD_PBS)); |
|
|
|
return m_DefaultShader; |
|
|
|
} |
|
|
|
|
|
|
|