mirror of
https://github.com/KillzXGaming/Switch-Toolbox
synced 2024-11-26 14:30:26 +00:00
Improve load times significantly for layout files.
Shaders are now compiled only once and load statically instead of being per material.
This commit is contained in:
parent
0da677980f
commit
a8016a2868
12 changed files with 204 additions and 196 deletions
|
@ -22,7 +22,7 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
public void LoadShaders()
|
public void LoadShaders()
|
||||||
{
|
{
|
||||||
program = CompileShaders();
|
Compile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Enable()
|
public void Enable()
|
||||||
|
|
|
@ -73,14 +73,9 @@ namespace LayoutBXLYT
|
||||||
};
|
};
|
||||||
|
|
||||||
var mat = pic1Pane.Material as BFLYT.Material;
|
var mat = pic1Pane.Material as BFLYT.Material;
|
||||||
if (mat.Shader == null)
|
|
||||||
{
|
|
||||||
mat.Shader = new BflytShader(mat);
|
|
||||||
mat.Shader.Compile();
|
|
||||||
}
|
|
||||||
|
|
||||||
mat.Shader.Enable();
|
ShaderLoader.CafeShader.Enable();
|
||||||
((BflytShader)mat.Shader).SetMaterials(pic1Pane,Textures);
|
BflytShader.SetMaterials(ShaderLoader.CafeShader, mat, pane, Textures);
|
||||||
|
|
||||||
if (pic1Pane.TexCoords.Length > 0)
|
if (pic1Pane.TexCoords.Length > 0)
|
||||||
{
|
{
|
||||||
|
@ -94,7 +89,7 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha, isSelected);
|
DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha, isSelected);
|
||||||
|
|
||||||
mat.Shader.Disable();
|
ShaderLoader.CafeShader.Disable();
|
||||||
}
|
}
|
||||||
else if (pane is BCLYT.PIC1)
|
else if (pane is BCLYT.PIC1)
|
||||||
{
|
{
|
||||||
|
@ -108,14 +103,9 @@ namespace LayoutBXLYT
|
||||||
};
|
};
|
||||||
|
|
||||||
var mat = pic1Pane.Material as BCLYT.Material;
|
var mat = pic1Pane.Material as BCLYT.Material;
|
||||||
if (mat.Shader == null)
|
|
||||||
{
|
|
||||||
mat.Shader = new BclytShader(mat);
|
|
||||||
mat.Shader.Compile();
|
|
||||||
}
|
|
||||||
|
|
||||||
mat.Shader.Enable();
|
ShaderLoader.CtrShader.Enable();
|
||||||
((BclytShader)mat.Shader).SetMaterials(pane,Textures);
|
BclytShader.SetMaterials(ShaderLoader.CtrShader, (BCLYT.Material)mat, pane, Textures);
|
||||||
|
|
||||||
if (pic1Pane.TexCoords.Length > 0)
|
if (pic1Pane.TexCoords.Length > 0)
|
||||||
{
|
{
|
||||||
|
@ -129,7 +119,7 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha, isSelected);
|
DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha, isSelected);
|
||||||
|
|
||||||
mat.Shader.Disable();
|
ShaderLoader.CtrShader.Disable();
|
||||||
}
|
}
|
||||||
else if (pane is BRLYT.PIC1)
|
else if (pane is BRLYT.PIC1)
|
||||||
{
|
{
|
||||||
|
@ -143,14 +133,9 @@ namespace LayoutBXLYT
|
||||||
};
|
};
|
||||||
|
|
||||||
var mat = pic1Pane.Material as BRLYT.Material;
|
var mat = pic1Pane.Material as BRLYT.Material;
|
||||||
if (mat.Shader == null)
|
|
||||||
{
|
|
||||||
mat.Shader = new BrlytShader(mat);
|
|
||||||
mat.Shader.Compile();
|
|
||||||
}
|
|
||||||
|
|
||||||
mat.Shader.Enable();
|
ShaderLoader.RevShader.Enable();
|
||||||
((BrlytShader)mat.Shader).SetMaterials(pane, Textures);
|
BrlytShader.SetMaterials(ShaderLoader.RevShader, (BRLYT.Material)mat, pane, Textures);
|
||||||
|
|
||||||
if (pic1Pane.TexCoords.Length > 0)
|
if (pic1Pane.TexCoords.Length > 0)
|
||||||
{
|
{
|
||||||
|
@ -164,7 +149,7 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha, isSelected);
|
DrawRectangle(pane, gameWindow, pane.Rectangle, TexCoords, Colors, false, effectiveAlpha, isSelected);
|
||||||
|
|
||||||
mat.Shader.Disable();
|
ShaderLoader.RevShader.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
GL.Disable(EnableCap.Texture2D);
|
GL.Disable(EnableCap.Texture2D);
|
||||||
|
@ -270,19 +255,16 @@ namespace LayoutBXLYT
|
||||||
BindFontBitmap(pane, fontBitmap);
|
BindFontBitmap(pane, fontBitmap);
|
||||||
|
|
||||||
var mat = textBox.Material as BFLYT.Material;
|
var mat = textBox.Material as BFLYT.Material;
|
||||||
if (mat.Shader == null)
|
|
||||||
{
|
|
||||||
mat.Shader = new BflytShader(mat);
|
|
||||||
mat.Shader.Compile();
|
|
||||||
}
|
|
||||||
|
|
||||||
mat.Shader.Enable();
|
BxlytShader shader = ShaderLoader.CafeShader;
|
||||||
((BflytShader)mat.Shader).SetMaterials(pane, Textures);
|
|
||||||
|
ShaderLoader.CafeShader.Enable();
|
||||||
|
BflytShader.SetMaterials(ShaderLoader.CafeShader, mat, pane, Textures);
|
||||||
|
|
||||||
GL.ActiveTexture(TextureUnit.Texture0 + 1);
|
GL.ActiveTexture(TextureUnit.Texture0 + 1);
|
||||||
mat.Shader.SetInt($"numTextureMaps", 1);
|
shader.SetInt($"numTextureMaps", 1);
|
||||||
mat.Shader.SetInt($"textures0", 1);
|
shader.SetInt($"textures0", 1);
|
||||||
mat.Shader.SetInt($"hasTexture0", 1);
|
shader.SetInt($"hasTexture0", 1);
|
||||||
GL.BindTexture(TextureTarget.Texture2D, textBox.RenderableFont.TexID);
|
GL.BindTexture(TextureTarget.Texture2D, textBox.RenderableFont.TexID);
|
||||||
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureSwizzleR, ConvertChannel(STChannelType.Red));
|
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureSwizzleR, ConvertChannel(STChannelType.Red));
|
||||||
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureSwizzleG, ConvertChannel(STChannelType.Green));
|
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureSwizzleG, ConvertChannel(STChannelType.Green));
|
||||||
|
@ -309,7 +291,7 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
DrawRectangle(pane, gameWindow, pane.Rectangle, texCoords, Colors, false, effectiveAlpha, isSelected);
|
DrawRectangle(pane, gameWindow, pane.Rectangle, texCoords, Colors, false, effectiveAlpha, isSelected);
|
||||||
|
|
||||||
// mat.Shader.Disable();
|
ShaderLoader.CafeShader.Disable();
|
||||||
|
|
||||||
GL.Disable(EnableCap.Texture2D);
|
GL.Disable(EnableCap.Texture2D);
|
||||||
GL.BindTexture(TextureTarget.Texture2D, 0);
|
GL.BindTexture(TextureTarget.Texture2D, 0);
|
||||||
|
@ -422,6 +404,14 @@ namespace LayoutBXLYT
|
||||||
if (!Runtime.LayoutEditor.DisplayWindowPane)
|
if (!Runtime.LayoutEditor.DisplayWindowPane)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
BxlytShader shader = null;
|
||||||
|
if (pane is BFLYT.PAN1)
|
||||||
|
shader = ShaderLoader.CafeShader;
|
||||||
|
if (pane is BCLYT.PAN1)
|
||||||
|
shader = ShaderLoader.CtrShader;
|
||||||
|
if (pane is BRLYT.PAN1)
|
||||||
|
shader = ShaderLoader.RevShader;
|
||||||
|
|
||||||
var window = (IWindowPane)pane;
|
var window = (IWindowPane)pane;
|
||||||
|
|
||||||
float dX = DrawnVertexX(pane.Width, pane.originX);
|
float dX = DrawnVertexX(pane.Width, pane.originX);
|
||||||
|
@ -531,7 +521,8 @@ namespace LayoutBXLYT
|
||||||
var windowFrame = window.WindowFrames[0];
|
var windowFrame = window.WindowFrames[0];
|
||||||
SetupShaders(pane, windowFrame.Material, Textures);
|
SetupShaders(pane, windowFrame.Material, Textures);
|
||||||
|
|
||||||
windowFrame.Material.Shader.SetInt("flipTexture", (int)window.WindowFrames[0].TextureFlip);
|
|
||||||
|
shader.SetInt("flipTexture", (int)window.WindowFrames[0].TextureFlip);
|
||||||
|
|
||||||
hasTextures = windowFrame.Material.TextureMaps?.Length > 0;
|
hasTextures = windowFrame.Material.TextureMaps?.Length > 0;
|
||||||
|
|
||||||
|
@ -734,7 +725,7 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matTL, Textures);
|
SetupShaders(pane, matTL, Textures);
|
||||||
|
|
||||||
matTL.Shader.SetInt("flipTexture", (int)window.WindowFrames[0].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[0].TextureFlip);
|
||||||
|
|
||||||
float pieceWidth = pane.Width - frameRight;
|
float pieceWidth = pane.Width - frameRight;
|
||||||
float pieceHeight = frameTop;
|
float pieceHeight = frameTop;
|
||||||
|
@ -753,7 +744,7 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matTR, Textures);
|
SetupShaders(pane, matTR, Textures);
|
||||||
|
|
||||||
matTR.Shader.SetInt("flipTexture", (int)window.WindowFrames[1].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[1].TextureFlip);
|
||||||
|
|
||||||
float pieceWidth = frameRight;
|
float pieceWidth = frameRight;
|
||||||
float pieceHeight = pane.Height - frameBottom;
|
float pieceHeight = pane.Height - frameBottom;
|
||||||
|
@ -772,7 +763,7 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matBL, Textures);
|
SetupShaders(pane, matBL, Textures);
|
||||||
|
|
||||||
matBL.Shader.SetInt("flipTexture", (int)window.WindowFrames[2].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[2].TextureFlip);
|
||||||
|
|
||||||
float pieceWidth = frameLeft;
|
float pieceWidth = frameLeft;
|
||||||
float pieceHeight = pane.Height - frameTop;
|
float pieceHeight = pane.Height - frameTop;
|
||||||
|
@ -791,7 +782,7 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matBR, Textures);
|
SetupShaders(pane, matBR, Textures);
|
||||||
|
|
||||||
matBR.Shader.SetInt("flipTexture", (int)window.WindowFrames[3].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[3].TextureFlip);
|
||||||
|
|
||||||
float pieceWidth = pane.Width - frameLeft;
|
float pieceWidth = pane.Width - frameLeft;
|
||||||
float pieceHeight = frameBottom;
|
float pieceHeight = frameBottom;
|
||||||
|
@ -835,7 +826,7 @@ namespace LayoutBXLYT
|
||||||
if (matTL.TextureMaps.Length > 0)
|
if (matTL.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matTL, Textures);
|
SetupShaders(pane, matTL, Textures);
|
||||||
matTL.Shader.SetInt("flipTexture", (int)window.WindowFrames[0].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[0].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -851,7 +842,7 @@ namespace LayoutBXLYT
|
||||||
if (matTR.TextureMaps.Length > 0)
|
if (matTR.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matTR, Textures);
|
SetupShaders(pane, matTR, Textures);
|
||||||
matTR.Shader.SetInt("flipTexture", (int)window.WindowFrames[1].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[1].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -867,7 +858,7 @@ namespace LayoutBXLYT
|
||||||
if (matBL.TextureMaps.Length > 0)
|
if (matBL.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matBL, Textures);
|
SetupShaders(pane, matBL, Textures);
|
||||||
matBL.Shader.SetInt("flipTexture", (int)window.WindowFrames[2].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[2].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -883,7 +874,7 @@ namespace LayoutBXLYT
|
||||||
if (matBR.TextureMaps.Length > 0)
|
if (matBR.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matBR, Textures);
|
SetupShaders(pane, matBR, Textures);
|
||||||
matBR.Shader.SetInt("flipTexture", (int)window.WindowFrames[3].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[3].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -899,7 +890,7 @@ namespace LayoutBXLYT
|
||||||
if (matT.TextureMaps.Length > 0)
|
if (matT.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matT, Textures);
|
SetupShaders(pane, matT, Textures);
|
||||||
matT.Shader.SetInt("flipTexture", (int)window.WindowFrames[4].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[4].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -915,7 +906,7 @@ namespace LayoutBXLYT
|
||||||
if (matB.TextureMaps.Length > 0)
|
if (matB.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matB, Textures);
|
SetupShaders(pane, matB, Textures);
|
||||||
matB.Shader.SetInt("flipTexture", (int)window.WindowFrames[5].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[5].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -931,7 +922,7 @@ namespace LayoutBXLYT
|
||||||
if (matL.TextureMaps.Length > 0)
|
if (matL.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matL, Textures);
|
SetupShaders(pane, matL, Textures);
|
||||||
matL.Shader.SetInt("flipTexture", (int)window.WindowFrames[6].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[6].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -947,7 +938,7 @@ namespace LayoutBXLYT
|
||||||
if (matR.TextureMaps.Length > 0)
|
if (matR.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
SetupShaders(pane, matR, Textures);
|
SetupShaders(pane, matR, Textures);
|
||||||
matR.Shader.SetInt("flipTexture", (int)window.WindowFrames[7].TextureFlip);
|
shader.SetInt("flipTexture", (int)window.WindowFrames[7].TextureFlip);
|
||||||
|
|
||||||
texCoords = new Vector2[]
|
texCoords = new Vector2[]
|
||||||
{
|
{
|
||||||
|
@ -1082,32 +1073,21 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
private static void SetupShaders(BasePane pane, BxlytMaterial mat, Dictionary<string, STGenericTexture> textures)
|
private static void SetupShaders(BasePane pane, BxlytMaterial mat, Dictionary<string, STGenericTexture> textures)
|
||||||
{
|
{
|
||||||
if (mat.Shader == null)
|
|
||||||
{
|
|
||||||
if (mat is Cafe.BFLYT.Material)
|
|
||||||
{
|
|
||||||
mat.Shader = new BflytShader((Cafe.BFLYT.Material)mat);
|
|
||||||
mat.Shader.Compile();
|
|
||||||
}
|
|
||||||
else if (mat is BRLYT.Material)
|
|
||||||
{
|
|
||||||
mat.Shader = new BrlytShader((BRLYT.Material)mat);
|
|
||||||
mat.Shader.Compile();
|
|
||||||
}
|
|
||||||
else if (mat is BCLYT.Material)
|
|
||||||
{
|
|
||||||
mat.Shader = new BclytShader((BCLYT.Material)mat);
|
|
||||||
mat.Shader.Compile();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mat.Shader.Enable();
|
|
||||||
if (mat is Cafe.BFLYT.Material)
|
if (mat is Cafe.BFLYT.Material)
|
||||||
((BflytShader)mat.Shader).SetMaterials(pane, textures);
|
{
|
||||||
|
ShaderLoader.CafeShader.Enable();
|
||||||
|
BflytShader.SetMaterials(ShaderLoader.CafeShader, (Cafe.BFLYT.Material)mat, pane, textures);
|
||||||
|
}
|
||||||
else if (mat is BRLYT.Material)
|
else if (mat is BRLYT.Material)
|
||||||
((BrlytShader)mat.Shader).SetMaterials(pane, textures);
|
{
|
||||||
|
ShaderLoader.RevShader.Enable();
|
||||||
|
BrlytShader.SetMaterials(ShaderLoader.RevShader, (BRLYT.Material)mat, pane, textures);
|
||||||
|
}
|
||||||
else if (mat is BCLYT.Material)
|
else if (mat is BCLYT.Material)
|
||||||
((BclytShader)mat.Shader).SetMaterials(pane, textures);
|
{
|
||||||
|
ShaderLoader.CtrShader.Enable();
|
||||||
|
BclytShader.SetMaterials(ShaderLoader.CtrShader, (BCLYT.Material)mat, pane, textures);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void RenderWindowContent(BasePane pane, uint sizeX, uint sizeY, BxlytWindowContent content,
|
private static void RenderWindowContent(BasePane pane, uint sizeX, uint sizeY, BxlytWindowContent content,
|
||||||
|
|
|
@ -1631,12 +1631,14 @@ namespace LayoutBXLYT.Cafe
|
||||||
if (ExternalLayout == null)
|
if (ExternalLayout == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var textureList = ExternalLayout.GetTextures();
|
ExternalLayout.header.TextureManager = layoutFile.TextureManager;
|
||||||
foreach (var tex in textureList)
|
|
||||||
if (!textures.ContainsKey(tex.Key))
|
|
||||||
textures.Add(tex.Key, tex.Value);
|
|
||||||
|
|
||||||
textureList.Clear();
|
/* var textureList = ExternalLayout.GetTextures();
|
||||||
|
foreach (var tex in textureList)
|
||||||
|
if (!textures.ContainsKey(tex.Key))
|
||||||
|
textures.Add(tex.Key, tex.Value);
|
||||||
|
|
||||||
|
textureList.Clear();*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,11 +12,7 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
public class BflytShader : BxlytShader
|
public class BflytShader : BxlytShader
|
||||||
{
|
{
|
||||||
public BFLYT.Material material;
|
public BflytShader() : base() {
|
||||||
|
|
||||||
public BflytShader(BFLYT.Material mat) : base()
|
|
||||||
{
|
|
||||||
material = mat;
|
|
||||||
LoadShaders();
|
LoadShaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,10 +41,10 @@ namespace LayoutBXLYT
|
||||||
SetInt($"texCoords0Source", 0);
|
SetInt($"texCoords0Source", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMaterials(BasePane pane, Dictionary<string, STGenericTexture> textures)
|
public static void SetMaterials(BxlytShader shader, BFLYT.Material material, BasePane pane, Dictionary<string, STGenericTexture> textures)
|
||||||
{
|
{
|
||||||
var rotationMatrix = pane.GetRotationMatrix();
|
var rotationMatrix = pane.GetRotationMatrix();
|
||||||
SetMatrix("rotationMatrix", ref rotationMatrix);
|
shader.SetMatrix("rotationMatrix", ref rotationMatrix);
|
||||||
|
|
||||||
STColor8 WhiteColor = material.WhiteColor;
|
STColor8 WhiteColor = material.WhiteColor;
|
||||||
STColor8 BlackColor = material.BlackColor;
|
STColor8 BlackColor = material.BlackColor;
|
||||||
|
@ -76,29 +72,29 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetColor("whiteColor", WhiteColor.Color);
|
shader.SetColor("whiteColor", WhiteColor.Color);
|
||||||
SetColor("blackColor", BlackColor.Color);
|
shader.SetColor("blackColor", BlackColor.Color);
|
||||||
SetInt("debugShading", (int)Runtime.LayoutEditor.Shading);
|
shader.SetInt("debugShading", (int)Runtime.LayoutEditor.Shading);
|
||||||
SetInt("numTextureMaps", material.TextureMaps.Length);
|
shader.SetInt("numTextureMaps", material.TextureMaps.Length);
|
||||||
SetVec2("uvScale0", new Vector2(1, 1));
|
shader.SetVec2("uvScale0", new Vector2(1, 1));
|
||||||
SetFloat("uvRotate0", 0);
|
shader.SetFloat("uvRotate0", 0);
|
||||||
SetVec2("uvTranslate0", new Vector2(0, 0));
|
shader.SetVec2("uvTranslate0", new Vector2(0, 0));
|
||||||
SetInt("flipTexture", 0);
|
shader.SetInt("flipTexture", 0);
|
||||||
SetInt("numTevStages", material.TevStages.Length);
|
shader.SetInt("numTevStages", material.TevStages.Length);
|
||||||
SetBool("ThresholdingAlphaInterpolation", material.ThresholdingAlphaInterpolation);
|
shader.SetBool("ThresholdingAlphaInterpolation", material.ThresholdingAlphaInterpolation);
|
||||||
SetVec4("IndirectMat0", new Vector4(1, 1, 0, 0));
|
shader.SetVec4("IndirectMat0", new Vector4(1, 1, 0, 0));
|
||||||
SetVec4("IndirectMat1", new Vector4(1, 1, 0, 0));
|
shader.SetVec4("IndirectMat1", new Vector4(1, 1, 0, 0));
|
||||||
SetInt("tevTexMode", 0);
|
shader.SetInt("tevTexMode", 0);
|
||||||
SetInt($"texCoords0GenType", 0);
|
shader.SetInt($"texCoords0GenType", 0);
|
||||||
SetInt($"texCoords0Source", 0);
|
shader.SetInt($"texCoords0Source", 0);
|
||||||
SetInt("hasTexture0", 0);
|
shader.SetInt("hasTexture0", 0);
|
||||||
SetInt("hasTexture1", 0);
|
shader.SetInt("hasTexture1", 0);
|
||||||
SetInt("hasTexture2", 0);
|
shader.SetInt("hasTexture2", 0);
|
||||||
SetInt("textures0", 0);
|
shader.SetInt("textures0", 0);
|
||||||
SetInt("textures1", 0);
|
shader.SetInt("textures1", 0);
|
||||||
SetInt("textures2", 0);
|
shader.SetInt("textures2", 0);
|
||||||
|
|
||||||
BindTextureUniforms();
|
BindTextureUniforms(shader, material);
|
||||||
|
|
||||||
if (material.TextureMaps.Length > 0 || Runtime.LayoutEditor.Shading == Runtime.LayoutEditor.DebugShading.UVTestPattern)
|
if (material.TextureMaps.Length > 0 || Runtime.LayoutEditor.Shading == Runtime.LayoutEditor.DebugShading.UVTestPattern)
|
||||||
GL.Enable(EnableCap.Texture2D);
|
GL.Enable(EnableCap.Texture2D);
|
||||||
|
@ -114,10 +110,10 @@ namespace LayoutBXLYT
|
||||||
if (textures.ContainsKey(TexName))
|
if (textures.ContainsKey(TexName))
|
||||||
{
|
{
|
||||||
GL.ActiveTexture(TextureUnit.Texture0 + id);
|
GL.ActiveTexture(TextureUnit.Texture0 + id);
|
||||||
SetInt($"textures{i}", id);
|
shader.SetInt($"textures{i}", id);
|
||||||
bool isBinded = BxlytToGL.BindGLTexture(material.TextureMaps[i], textures[TexName]);
|
bool isBinded = BxlytToGL.BindGLTexture(material.TextureMaps[i], textures[TexName]);
|
||||||
if (isBinded)
|
if (isBinded)
|
||||||
SetInt($"hasTexture{i}", 1);
|
shader.SetInt($"hasTexture{i}", 1);
|
||||||
|
|
||||||
id++;
|
id++;
|
||||||
}
|
}
|
||||||
|
@ -125,14 +121,14 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
for (int i = 0; i < material.TexCoords?.Length; i++)
|
for (int i = 0; i < material.TexCoords?.Length; i++)
|
||||||
{
|
{
|
||||||
SetInt($"texCoords{i}GenType", (int)material.TexCoords[i].GenType);
|
shader.SetInt($"texCoords{i}GenType", (int)material.TexCoords[i].GenType);
|
||||||
SetInt($"texCoords{i}Source", (int)material.TexCoords[i].Source);
|
shader.SetInt($"texCoords{i}Source", (int)material.TexCoords[i].Source);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < material.TevStages?.Length; i++)
|
for (int i = 0; i < material.TevStages?.Length; i++)
|
||||||
{
|
{
|
||||||
SetInt($"tevStage{i}RGB", (int)material.TevStages[i].ColorMode);
|
shader.SetInt($"tevStage{i}RGB", (int)material.TevStages[i].ColorMode);
|
||||||
SetInt($"tevStage{i}A", (int)material.TevStages[i].AlphaMode);
|
shader.SetInt($"tevStage{i}A", (int)material.TevStages[i].AlphaMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (material.TextureTransforms.Length > 0)
|
if (material.TextureTransforms.Length > 0)
|
||||||
|
@ -154,9 +150,9 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetVec2("uvScale0", new Vector2(scale.X, scale.Y));
|
shader.SetVec2("uvScale0", new Vector2(scale.X, scale.Y));
|
||||||
SetFloat("uvRotate0", rotate);
|
shader.SetFloat("uvRotate0", rotate);
|
||||||
SetVec2("uvTranslate0", new Vector2(translate.X, translate.Y));
|
shader.SetVec2("uvTranslate0", new Vector2(translate.X, translate.Y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -202,11 +198,11 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindTextureUniforms()
|
private static void BindTextureUniforms(BxlytShader shader, BxlytMaterial material)
|
||||||
{
|
{
|
||||||
//Do uv test pattern
|
//Do uv test pattern
|
||||||
GL.ActiveTexture(TextureUnit.Texture10);
|
GL.ActiveTexture(TextureUnit.Texture10);
|
||||||
GL.Uniform1(GL.GetUniformLocation(program, "uvTestPattern"), 10);
|
GL.Uniform1(GL.GetUniformLocation(shader.program, "uvTestPattern"), 10);
|
||||||
GL.BindTexture(TextureTarget.Texture2D, RenderTools.uvTestPattern.RenderableTex.TexID);
|
GL.BindTexture(TextureTarget.Texture2D, RenderTools.uvTestPattern.RenderableTex.TexID);
|
||||||
|
|
||||||
if (material.TextureMaps.Length > 0)
|
if (material.TextureMaps.Length > 0)
|
||||||
|
|
|
@ -892,9 +892,6 @@ namespace LayoutBXLYT
|
||||||
public STColor8 TevColor { get; set; }
|
public STColor8 TevColor { get; set; }
|
||||||
public STColor8[] TevConstantColors { get; set; }
|
public STColor8[] TevConstantColors { get; set; }
|
||||||
|
|
||||||
public List<TextureRef> TextureMaps { get; set; }
|
|
||||||
public List<TextureTransform> TextureTransforms { get; set; }
|
|
||||||
|
|
||||||
private uint flags;
|
private uint flags;
|
||||||
|
|
||||||
private BCLYT.Header ParentLayout;
|
private BCLYT.Header ParentLayout;
|
||||||
|
@ -908,17 +905,14 @@ namespace LayoutBXLYT
|
||||||
|
|
||||||
public Material()
|
public Material()
|
||||||
{
|
{
|
||||||
TextureMaps = new List<TextureRef>();
|
TextureMaps = new TextureRef[0];
|
||||||
TextureTransforms = new List<TextureTransform>();
|
TextureTransforms = new TextureTransform[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public Material(FileReader reader, Header header) : base()
|
public Material(FileReader reader, Header header) : base()
|
||||||
{
|
{
|
||||||
ParentLayout = header;
|
ParentLayout = header;
|
||||||
|
|
||||||
TextureMaps = new List<TextureRef>();
|
|
||||||
TextureTransforms = new List<TextureTransform>();
|
|
||||||
|
|
||||||
Name = reader.ReadString(20, true);
|
Name = reader.ReadString(20, true);
|
||||||
TevColor = reader.ReadColor8RGBA();
|
TevColor = reader.ReadColor8RGBA();
|
||||||
TevConstantColors = reader.ReadColor8sRGBA(6);
|
TevConstantColors = reader.ReadColor8sRGBA(6);
|
||||||
|
@ -929,11 +923,14 @@ namespace LayoutBXLYT
|
||||||
uint texCoordGens = (flags >> 4) & 3;
|
uint texCoordGens = (flags >> 4) & 3;
|
||||||
uint tevStages = (flags >> 6) & 7;
|
uint tevStages = (flags >> 6) & 7;
|
||||||
|
|
||||||
|
TextureMaps = new TextureRef[texCount];
|
||||||
|
TextureTransforms = new TextureTransform[mtxCount];
|
||||||
|
|
||||||
for (int i = 0; i < texCount; i++)
|
for (int i = 0; i < texCount; i++)
|
||||||
TextureMaps.Add(new TextureRef(reader, header));
|
TextureMaps[i] = new TextureRef(reader, header);
|
||||||
|
|
||||||
for (int i = 0; i < mtxCount; i++)
|
for (int i = 0; i < mtxCount; i++)
|
||||||
TextureTransforms.Add(new TextureTransform(reader));
|
TextureTransforms[i] = new TextureTransform(reader);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Write(FileWriter writer, Header header)
|
public void Write(FileWriter writer, Header header)
|
||||||
|
@ -943,20 +940,16 @@ namespace LayoutBXLYT
|
||||||
writer.Write(TevConstantColors);
|
writer.Write(TevConstantColors);
|
||||||
writer.Write(flags);
|
writer.Write(flags);
|
||||||
|
|
||||||
for (int i = 0; i < TextureMaps.Count; i++)
|
for (int i = 0; i < TextureMaps.Length; i++)
|
||||||
TextureMaps[i].Write(writer);
|
((TextureRef)TextureMaps[i]).Write(writer);
|
||||||
|
|
||||||
for (int i = 0; i < TextureTransforms.Count; i++)
|
for (int i = 0; i < TextureTransforms.Length; i++)
|
||||||
TextureTransforms[i].Write(writer);
|
((TextureTransform)TextureTransforms[i]).Write(writer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TextureTransform
|
public class TextureTransform : BxlytTextureTransform
|
||||||
{
|
{
|
||||||
public Vector2F Translate;
|
|
||||||
public float Rotate;
|
|
||||||
public Vector2F Scale;
|
|
||||||
|
|
||||||
public TextureTransform() { }
|
public TextureTransform() { }
|
||||||
|
|
||||||
public TextureTransform(FileReader reader)
|
public TextureTransform(FileReader reader)
|
||||||
|
|
|
@ -11,11 +11,8 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
public class BclytShader : BxlytShader
|
public class BclytShader : BxlytShader
|
||||||
{
|
{
|
||||||
public BCLYT.Material material;
|
public BclytShader() : base()
|
||||||
|
|
||||||
public BclytShader(BCLYT.Material mat) : base()
|
|
||||||
{
|
{
|
||||||
material = mat;
|
|
||||||
LoadShaders();
|
LoadShaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,59 +39,59 @@ namespace LayoutBXLYT
|
||||||
SetInt($"texCoords0Source", 0);
|
SetInt($"texCoords0Source", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMaterials(BasePane pane, Dictionary<string, STGenericTexture> textures)
|
public static void SetMaterials(BxlytShader shader, BCLYT.Material material, BasePane pane, Dictionary<string, STGenericTexture> textures)
|
||||||
{
|
{
|
||||||
Matrix4 rotationX = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(pane.Rotate.X));
|
Matrix4 rotationX = Matrix4.CreateRotationX(MathHelper.DegreesToRadians(pane.Rotate.X));
|
||||||
Matrix4 rotationY = Matrix4.CreateRotationY(MathHelper.DegreesToRadians(pane.Rotate.Y));
|
Matrix4 rotationY = Matrix4.CreateRotationY(MathHelper.DegreesToRadians(pane.Rotate.Y));
|
||||||
Matrix4 rotationZ = Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(pane.Rotate.Z));
|
Matrix4 rotationZ = Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(pane.Rotate.Z));
|
||||||
var rotationMatrix = rotationX * rotationY * rotationZ;
|
var rotationMatrix = rotationX * rotationY * rotationZ;
|
||||||
|
|
||||||
SetMatrix("rotationMatrix", ref rotationMatrix);
|
shader.SetMatrix("rotationMatrix", ref rotationMatrix);
|
||||||
|
|
||||||
SetColor("whiteColor", material.TevConstantColors[0].Color);
|
shader.SetColor("whiteColor", material.TevConstantColors[0].Color);
|
||||||
SetColor("blackColor", material.TevColor.Color);
|
shader.SetColor("blackColor", material.TevColor.Color);
|
||||||
SetInt("debugShading", (int)Runtime.LayoutEditor.Shading);
|
shader.SetInt("debugShading", (int)Runtime.LayoutEditor.Shading);
|
||||||
SetInt("numTextureMaps", material.TextureMaps.Count);
|
shader.SetInt("numTextureMaps", material.TextureMaps.Length);
|
||||||
SetVec2("uvScale0", new Vector2(1, 1));
|
shader.SetVec2("uvScale0", new Vector2(1, 1));
|
||||||
SetFloat("uvRotate0", 0);
|
shader.SetFloat("uvRotate0", 0);
|
||||||
SetVec2("uvTranslate0", new Vector2(0, 0));
|
shader.SetVec2("uvTranslate0", new Vector2(0, 0));
|
||||||
SetInt("flipTexture", 0);
|
shader.SetInt("flipTexture", 0);
|
||||||
SetBool("ThresholdingAlphaInterpolation", material.ThresholdingAlphaInterpolation);
|
shader.SetBool("ThresholdingAlphaInterpolation", material.ThresholdingAlphaInterpolation);
|
||||||
SetInt($"texCoords0GenType", 0);
|
shader.SetInt($"texCoords0GenType", 0);
|
||||||
SetInt($"texCoords0Source", 0);
|
shader.SetInt($"texCoords0Source", 0);
|
||||||
|
|
||||||
BindTextureUniforms();
|
BindTextureUniforms(shader, material);
|
||||||
|
|
||||||
string textureMap0 = "";
|
string textureMap0 = "";
|
||||||
if (material.TextureMaps.Count > 0)
|
if (material.TextureMaps.Length > 0)
|
||||||
textureMap0 = material.GetTexture(0);
|
textureMap0 = material.GetTexture(0);
|
||||||
|
|
||||||
if (textures.ContainsKey(textureMap0))
|
if (textures.ContainsKey(textureMap0))
|
||||||
{
|
{
|
||||||
GL.ActiveTexture(TextureUnit.Texture0);
|
GL.ActiveTexture(TextureUnit.Texture0);
|
||||||
SetInt("textures0", 0);
|
shader.SetInt("textures0", 0);
|
||||||
bool isBinded = BxlytToGL.BindGLTexture(material.TextureMaps[0], textures[textureMap0]);
|
bool isBinded = BxlytToGL.BindGLTexture(material.TextureMaps[0], textures[textureMap0]);
|
||||||
if (isBinded)
|
if (isBinded)
|
||||||
SetInt("hasTexture0", 1);
|
shader.SetInt("hasTexture0", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (material.TextureTransforms.Count > 0)
|
if (material.TextureTransforms.Length > 0)
|
||||||
{
|
{
|
||||||
var transform = material.TextureTransforms[0];
|
var transform = material.TextureTransforms[0];
|
||||||
SetVec2("uvScale0", new Vector2(transform.Scale.X, transform.Scale.Y));
|
shader.SetVec2("uvScale0", new Vector2(transform.Scale.X, transform.Scale.Y));
|
||||||
SetFloat("uvRotate0", transform.Rotate);
|
shader.SetFloat("uvRotate0", transform.Rotate);
|
||||||
SetVec2("uvTranslate0", new Vector2(transform.Translate.X, transform.Translate.Y));
|
shader.SetVec2("uvTranslate0", new Vector2(transform.Translate.X, transform.Translate.Y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindTextureUniforms()
|
private static void BindTextureUniforms(BxlytShader shader, BxlytMaterial material)
|
||||||
{
|
{
|
||||||
//Do uv test pattern
|
//Do uv test pattern
|
||||||
GL.ActiveTexture(TextureUnit.Texture10);
|
GL.ActiveTexture(TextureUnit.Texture10);
|
||||||
GL.Uniform1(GL.GetUniformLocation(program, "uvTestPattern"), 10);
|
GL.Uniform1(GL.GetUniformLocation(shader.program, "uvTestPattern"), 10);
|
||||||
GL.BindTexture(TextureTarget.Texture2D, RenderTools.uvTestPattern.RenderableTex.TexID);
|
GL.BindTexture(TextureTarget.Texture2D, RenderTools.uvTestPattern.RenderableTex.TexID);
|
||||||
|
|
||||||
if (material.TextureMaps.Count > 0)
|
if (material.TextureMaps.Length > 0)
|
||||||
{
|
{
|
||||||
var tex = material.TextureMaps[0];
|
var tex = material.TextureMaps[0];
|
||||||
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, BxlytToGL.ConvertTextureWrap(tex.WrapModeU));
|
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, BxlytToGL.ConvertTextureWrap(tex.WrapModeU));
|
||||||
|
|
|
@ -2065,9 +2065,6 @@ namespace LayoutBXLYT
|
||||||
[DisplayName("Thresholding Alpha Interpolation"), CategoryAttribute("Alpha")]
|
[DisplayName("Thresholding Alpha Interpolation"), CategoryAttribute("Alpha")]
|
||||||
public virtual bool ThresholdingAlphaInterpolation { get; set; }
|
public virtual bool ThresholdingAlphaInterpolation { get; set; }
|
||||||
|
|
||||||
[Browsable(false)]
|
|
||||||
public virtual BxlytShader Shader { get; set; }
|
|
||||||
|
|
||||||
[DisplayName("Texture Maps"), CategoryAttribute("Texture")]
|
[DisplayName("Texture Maps"), CategoryAttribute("Texture")]
|
||||||
public BxlytTextureRef[] TextureMaps { get; set; }
|
public BxlytTextureRef[] TextureMaps { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,8 @@ namespace LayoutBXLYT
|
||||||
{
|
{
|
||||||
public class BrlytShader : BxlytShader
|
public class BrlytShader : BxlytShader
|
||||||
{
|
{
|
||||||
public BRLYT.Material material;
|
public BrlytShader() : base()
|
||||||
|
|
||||||
public BrlytShader(BRLYT.Material mat) : base()
|
|
||||||
{
|
{
|
||||||
material = mat;
|
|
||||||
LoadShaders();
|
LoadShaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +41,7 @@ namespace LayoutBXLYT
|
||||||
SetInt($"texCoords0Source", 0);
|
SetInt($"texCoords0Source", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetMaterials(BasePane pane, Dictionary<string, STGenericTexture> textures)
|
public static void SetMaterials(BxlytShader shader, BRLYT.Material material, BasePane pane, Dictionary<string, STGenericTexture> textures)
|
||||||
{
|
{
|
||||||
var paneRotate = pane.Rotate;
|
var paneRotate = pane.Rotate;
|
||||||
if (pane.animController.PaneSRT?.Count > 0)
|
if (pane.animController.PaneSRT?.Count > 0)
|
||||||
|
@ -68,7 +65,7 @@ namespace LayoutBXLYT
|
||||||
Matrix4 rotationZ = Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(paneRotate.Z));
|
Matrix4 rotationZ = Matrix4.CreateRotationZ(MathHelper.DegreesToRadians(paneRotate.Z));
|
||||||
var rotationMatrix = rotationX * rotationY * rotationZ;
|
var rotationMatrix = rotationX * rotationY * rotationZ;
|
||||||
|
|
||||||
SetMatrix("rotationMatrix", ref rotationMatrix);
|
shader.SetMatrix("rotationMatrix", ref rotationMatrix);
|
||||||
|
|
||||||
var WhiteColor = material.WhiteColor;
|
var WhiteColor = material.WhiteColor;
|
||||||
var BlackColor = material.BlackColor;
|
var BlackColor = material.BlackColor;
|
||||||
|
@ -96,23 +93,23 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetColor("whiteColor", Color.FromArgb(255, WhiteColor.R, WhiteColor.G, WhiteColor.B));
|
shader.SetColor("whiteColor", Color.FromArgb(255, WhiteColor.R, WhiteColor.G, WhiteColor.B));
|
||||||
SetColor("blackColor", BlackColor.Color);
|
shader.SetColor("blackColor", BlackColor.Color);
|
||||||
SetInt("debugShading", (int)Runtime.LayoutEditor.Shading);
|
shader.SetInt("debugShading", (int)Runtime.LayoutEditor.Shading);
|
||||||
SetInt("numTextureMaps", material.TextureMaps.Length);
|
shader.SetInt("numTextureMaps", material.TextureMaps.Length);
|
||||||
SetVec2("uvScale0", new Vector2(1, 1));
|
shader.SetVec2("uvScale0", new Vector2(1, 1));
|
||||||
SetFloat("uvRotate0", 0);
|
shader.SetFloat("uvRotate0", 0);
|
||||||
SetVec2("uvTranslate0", new Vector2(0, 0));
|
shader.SetVec2("uvTranslate0", new Vector2(0, 0));
|
||||||
SetInt("flipTexture", 0);
|
shader.SetInt("flipTexture", 0);
|
||||||
SetInt("numTevStages", 0);
|
shader.SetInt("numTevStages", 0);
|
||||||
SetBool("ThresholdingAlphaInterpolation", material.ThresholdingAlphaInterpolation);
|
shader.SetBool("ThresholdingAlphaInterpolation", material.ThresholdingAlphaInterpolation);
|
||||||
SetVec4("IndirectMat0", new Vector4(1, 1, 0, 0));
|
shader.SetVec4("IndirectMat0", new Vector4(1, 1, 0, 0));
|
||||||
SetVec4("IndirectMat1", new Vector4(1, 1, 0, 0));
|
shader.SetVec4("IndirectMat1", new Vector4(1, 1, 0, 0));
|
||||||
SetInt("tevTexMode", 0);
|
shader.SetInt("tevTexMode", 0);
|
||||||
SetInt($"texCoords0GenType", 0);
|
shader.SetInt($"texCoords0GenType", 0);
|
||||||
SetInt($"texCoords0Source", 0);
|
shader.SetInt($"texCoords0Source", 0);
|
||||||
|
|
||||||
BindTextureUniforms();
|
BindTextureUniforms(shader, material);
|
||||||
|
|
||||||
int id = 1;
|
int id = 1;
|
||||||
for (int i = 0; i < material.TextureMaps.Length; i++)
|
for (int i = 0; i < material.TextureMaps.Length; i++)
|
||||||
|
@ -125,10 +122,10 @@ namespace LayoutBXLYT
|
||||||
if (textures.ContainsKey(TexName))
|
if (textures.ContainsKey(TexName))
|
||||||
{
|
{
|
||||||
GL.ActiveTexture(TextureUnit.Texture0 + id);
|
GL.ActiveTexture(TextureUnit.Texture0 + id);
|
||||||
SetInt($"textures{i}", id);
|
shader.SetInt($"textures{i}", id);
|
||||||
bool isBinded = BxlytToGL.BindGLTexture(material.TextureMaps[i], textures[TexName]);
|
bool isBinded = BxlytToGL.BindGLTexture(material.TextureMaps[i], textures[TexName]);
|
||||||
if (isBinded)
|
if (isBinded)
|
||||||
SetInt($"hasTexture{i}", 1);
|
shader.SetInt($"hasTexture{i}", 1);
|
||||||
|
|
||||||
id++;
|
id++;
|
||||||
}
|
}
|
||||||
|
@ -153,9 +150,9 @@ namespace LayoutBXLYT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetVec2("uvScale0", new Vector2(scale.X, scale.Y));
|
shader.SetVec2("uvScale0", new Vector2(scale.X, scale.Y));
|
||||||
SetFloat("uvRotate0", rotate);
|
shader.SetFloat("uvRotate0", rotate);
|
||||||
SetVec2("uvTranslate0", new Vector2(translate.X, translate.Y));
|
shader.SetVec2("uvTranslate0", new Vector2(translate.X, translate.Y));
|
||||||
}
|
}
|
||||||
|
|
||||||
GL.Enable(EnableCap.Blend);
|
GL.Enable(EnableCap.Blend);
|
||||||
|
@ -167,11 +164,11 @@ namespace LayoutBXLYT
|
||||||
GL.LogicOp(LogicOp.Noop);
|
GL.LogicOp(LogicOp.Noop);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BindTextureUniforms()
|
private static void BindTextureUniforms(BxlytShader shader, BxlytMaterial material)
|
||||||
{
|
{
|
||||||
//Do uv test pattern
|
//Do uv test pattern
|
||||||
GL.ActiveTexture(TextureUnit.Texture10);
|
GL.ActiveTexture(TextureUnit.Texture10);
|
||||||
GL.Uniform1(GL.GetUniformLocation(program, "uvTestPattern"), 10);
|
GL.Uniform1(GL.GetUniformLocation(shader.program, "uvTestPattern"), 10);
|
||||||
GL.BindTexture(TextureTarget.Texture2D, RenderTools.uvTestPattern.RenderableTex.TexID);
|
GL.BindTexture(TextureTarget.Texture2D, RenderTools.uvTestPattern.RenderableTex.TexID);
|
||||||
|
|
||||||
if (material.TextureMaps.Length > 0)
|
if (material.TextureMaps.Length > 0)
|
||||||
|
|
43
File_Format_Library/FileFormats/Layout/ShaderLoader.cs
Normal file
43
File_Format_Library/FileFormats/Layout/ShaderLoader.cs
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace LayoutBXLYT
|
||||||
|
{
|
||||||
|
public class ShaderLoader
|
||||||
|
{
|
||||||
|
private static BflytShader cafeShader;
|
||||||
|
private static BrlytShader revShader;
|
||||||
|
private static BclytShader ctrShader;
|
||||||
|
|
||||||
|
public static BflytShader CafeShader
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (cafeShader == null)
|
||||||
|
cafeShader = new BflytShader();
|
||||||
|
return cafeShader;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static BrlytShader RevShader
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (revShader == null)
|
||||||
|
revShader = new BrlytShader();
|
||||||
|
return revShader;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static BclytShader CtrShader
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (ctrShader == null)
|
||||||
|
ctrShader = new BclytShader();
|
||||||
|
return ctrShader;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -312,6 +312,7 @@
|
||||||
<Compile Include="FileFormats\Layout\CAFE\Materials\TexCoordGen.cs" />
|
<Compile Include="FileFormats\Layout\CAFE\Materials\TexCoordGen.cs" />
|
||||||
<Compile Include="FileFormats\Layout\CAFE\Materials\TextureRef.cs" />
|
<Compile Include="FileFormats\Layout\CAFE\Materials\TextureRef.cs" />
|
||||||
<Compile Include="FileFormats\Layout\CAFE\Materials\TextureTransform.cs" />
|
<Compile Include="FileFormats\Layout\CAFE\Materials\TextureTransform.cs" />
|
||||||
|
<Compile Include="FileFormats\Layout\ShaderLoader.cs" />
|
||||||
<Compile Include="FileFormats\Layout\CTR\BCLYT.cs" />
|
<Compile Include="FileFormats\Layout\CTR\BCLYT.cs" />
|
||||||
<Compile Include="FileFormats\Layout\CAFE\FLYT.cs" />
|
<Compile Include="FileFormats\Layout\CAFE\FLYT.cs" />
|
||||||
<Compile Include="FileFormats\Layout\CTR\BclytShader.cs" />
|
<Compile Include="FileFormats\Layout\CTR\BclytShader.cs" />
|
||||||
|
|
|
@ -89,6 +89,7 @@ namespace LayoutBXLYT
|
||||||
displayGridToolStripMenuItem.Checked = Runtime.LayoutEditor.DisplayGrid;
|
displayGridToolStripMenuItem.Checked = Runtime.LayoutEditor.DisplayGrid;
|
||||||
displayTextPanesToolStripMenuItem.Checked = Runtime.LayoutEditor.DisplayTextPane;
|
displayTextPanesToolStripMenuItem.Checked = Runtime.LayoutEditor.DisplayTextPane;
|
||||||
transformChildrenToolStripMenuItem.Checked = Runtime.LayoutEditor.TransformChidlren;
|
transformChildrenToolStripMenuItem.Checked = Runtime.LayoutEditor.TransformChidlren;
|
||||||
|
viewPartsAsNullPanesToolStripMenuItem.Checked = Runtime.LayoutEditor.PartsAsNullPanes;
|
||||||
|
|
||||||
ObjectSelected += OnObjectSelected;
|
ObjectSelected += OnObjectSelected;
|
||||||
ObjectChanged += OnObjectChanged;
|
ObjectChanged += OnObjectChanged;
|
||||||
|
|
|
@ -1385,6 +1385,7 @@
|
||||||
<Folder Include="FileFormats\Compression\" />
|
<Folder Include="FileFormats\Compression\" />
|
||||||
<Folder Include="FileFormats\DAE\COLLADA\" />
|
<Folder Include="FileFormats\DAE\COLLADA\" />
|
||||||
<Folder Include="FileFormats\DAE\Custom\" />
|
<Folder Include="FileFormats\DAE\Custom\" />
|
||||||
|
<Folder Include="Rendering\Shaders\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Resources\boneWeightGradient.png" />
|
<None Include="Resources\boneWeightGradient.png" />
|
||||||
|
|
Loading…
Reference in a new issue