Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit 38dd4ed

Browse files
Merged in dev/staticShaderLibrary (pull request #105)
Initial check-in of a static library to collate shaders on first use.
2 parents 45de232 + f7f7535 commit 38dd4ed

File tree

10 files changed

+49
-9
lines changed

10 files changed

+49
-9
lines changed

Runtime/Scripts/Effects/ShaderEffects/UIAdditiveEffect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void SetMaterial()
2525
if (mGraphic.material == null || mGraphic.material.name == "Default UI Material")
2626
{
2727
//Applying default material with UI Image Crop shader
28-
mGraphic.material = new Material(Shader.Find("UI Extensions/UIAdditive"));
28+
mGraphic.material = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/UIAdditive"));
2929
}
3030
}
3131
else

Runtime/Scripts/Effects/ShaderEffects/UIImageCrop.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void SetMaterial()
3232
if (mGraphic.material == null || mGraphic.material.name == "Default UI Material")
3333
{
3434
//Applying default material with UI Image Crop shader
35-
mGraphic.material = new Material(Shader.Find("UI Extensions/UI Image Crop"));
35+
mGraphic.material = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/UI Image Crop"));
3636
}
3737
mat = mGraphic.material;
3838
}

Runtime/Scripts/Effects/ShaderEffects/UILinearDodgeEffect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void SetMaterial()
2525
if (mGraphic.material == null || mGraphic.material.name == "Default UI Material")
2626
{
2727
//Applying default material with UI Image Crop shader
28-
mGraphic.material = new Material(Shader.Find("UI Extensions/UILinearDodge"));
28+
mGraphic.material = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/UILinearDodge"));
2929
}
3030
}
3131
else

Runtime/Scripts/Effects/ShaderEffects/UIMultiplyEffect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void SetMaterial()
2525
if (mGraphic.material == null || mGraphic.material.name == "Default UI Material")
2626
{
2727
//Applying default material with UI Image Crop shader
28-
mGraphic.material = new Material(Shader.Find("UI Extensions/UIMultiply"));
28+
mGraphic.material = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/UIMultiply"));
2929
}
3030
}
3131
else

Runtime/Scripts/Effects/ShaderEffects/UIScreenEffect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void SetMaterial()
2525
if (mGraphic.material == null || mGraphic.material.name == "Default UI Material")
2626
{
2727
//Applying default material with UI Image Crop shader
28-
mGraphic.material = new Material(Shader.Find("UI Extensions/UIScreen"));
28+
mGraphic.material = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/UIScreen"));
2929
}
3030
}
3131
else

Runtime/Scripts/Effects/ShaderEffects/UISoftAdditiveEffect.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void SetMaterial()
2525
if (mGraphic.material == null || mGraphic.material.name == "Default UI Material")
2626
{
2727
//Applying default material with UI Image Crop shader
28-
mGraphic.material = new Material(Shader.Find("UI Extensions/UISoftAdditive"));
28+
mGraphic.material = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/UISoftAdditive"));
2929
}
3030
}
3131
else

Runtime/Scripts/Effects/SoftMaskScript.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void Start()
4848
var text = GetComponent<Text>();
4949
if (text != null)
5050
{
51-
mat = new Material(Shader.Find("UI Extensions/SoftMaskShader"));
51+
mat = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/SoftMaskShader"));
5252
text.material = mat;
5353
cachedCanvas = text.canvas;
5454
cachedCanvasTransform = cachedCanvas.transform;
@@ -64,7 +64,7 @@ void Start()
6464
var graphic = GetComponent<Graphic>();
6565
if (graphic != null)
6666
{
67-
mat = new Material(Shader.Find("UI Extensions/SoftMaskShader"));
67+
mat = new Material(ShaderLibrary.GetShaderInstance("UI Extensions/SoftMaskShader"));
6868
graphic.material = mat;
6969
cachedCanvas = graphic.canvas;
7070
cachedCanvasTransform = cachedCanvas.transform;

Runtime/Scripts/Effects/UIParticleSystem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ protected bool Initialize()
7676

7777
if (material == null)
7878
{
79-
var foundShader = Shader.Find("UI Extensions/Particles/Additive");
79+
var foundShader = ShaderLibrary.GetShaderInstance("UI Extensions/Particles/Additive");
8080
if (foundShader)
8181
{
8282
material = new Material(foundShader);
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/// Credit SimonDarksideJ
2+
3+
using System.Collections.Generic;
4+
using UnityEditor;
5+
6+
namespace UnityEngine.UI.Extensions
7+
{
8+
[InitializeOnLoadAttribute]
9+
public static class ShaderLibrary
10+
{
11+
public static Dictionary<string, Shader> shaderInstances = new Dictionary<string, Shader>();
12+
public static Shader[] preLoadedShaders;
13+
14+
public static Shader GetShaderInstance(string shaderName)
15+
{
16+
if (shaderInstances.ContainsKey(shaderName))
17+
{
18+
return shaderInstances[shaderName];
19+
}
20+
21+
var newInstance = Shader.Find(shaderName);
22+
if (newInstance != null)
23+
{
24+
shaderInstances.Add(shaderName, newInstance);
25+
}
26+
return newInstance;
27+
}
28+
}
29+
}

Runtime/Scripts/Utilities/ShaderLibrary.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)