diff --git a/.vs/Toolbox/v15/.suo b/.vs/Toolbox/v15/.suo index 137e305b..c38242b3 100644 Binary files a/.vs/Toolbox/v15/.suo and b/.vs/Toolbox/v15/.suo differ diff --git a/File_Format_Library/FileFormats/BCRES/Wrappers/CMDL/MTOBWrapper.cs b/File_Format_Library/FileFormats/BCRES/Wrappers/CMDL/MTOBWrapper.cs index 14178b8b..4903f03b 100644 --- a/File_Format_Library/FileFormats/BCRES/Wrappers/CMDL/MTOBWrapper.cs +++ b/File_Format_Library/FileFormats/BCRES/Wrappers/CMDL/MTOBWrapper.cs @@ -85,43 +85,35 @@ namespace FirstPlugin switch (TextureMapInfo.WrapU) { - case PICATextureWrap.Repeat: tex1.wrapModeS = 0; break; - case PICATextureWrap.Mirror: tex1.wrapModeS = 1; break; - case PICATextureWrap.ClampToEdge: tex1.wrapModeS = 2; break; - case PICATextureWrap.ClampToBorder: tex1.wrapModeS = 2; break; + case PICATextureWrap.Repeat: tex1.WrapModeS = STTextureWrapMode.Repeat; break; + case PICATextureWrap.Mirror: tex1.WrapModeS = STTextureWrapMode.Mirror; break; + case PICATextureWrap.ClampToEdge: tex1.WrapModeS = STTextureWrapMode.Clamp; break; + case PICATextureWrap.ClampToBorder: tex1.WrapModeS = STTextureWrapMode.Clamp; break; } switch (TextureMapInfo.WrapV) { - case PICATextureWrap.Repeat: tex1.wrapModeT = 0; break; - case PICATextureWrap.Mirror: tex1.wrapModeT = 1; break; - case PICATextureWrap.ClampToEdge: tex1.wrapModeT = 2; break; - case PICATextureWrap.ClampToBorder: tex1.wrapModeT = 2; break; + case PICATextureWrap.Repeat: tex1.WrapModeT = STTextureWrapMode.Repeat; break; + case PICATextureWrap.Mirror: tex1.WrapModeT = STTextureWrapMode.Mirror; break; + case PICATextureWrap.ClampToEdge: tex1.WrapModeT = STTextureWrapMode.Clamp; break; + case PICATextureWrap.ClampToBorder: tex1.WrapModeT = STTextureWrapMode.Clamp; break; } switch (TextureMapInfo.MagFilter) { - case PICATextureFilter.Linear: tex1.magFilter = 0; break; - case PICATextureFilter.Nearest: tex1.magFilter = 1; break; + case PICATextureFilter.Linear: tex1.MagFilter = STTextureMagFilter.Linear; break; + case PICATextureFilter.Nearest: tex1.MagFilter = STTextureMagFilter.Nearest; break; } switch (TextureMapInfo.MinFilter) { - case PICATextureFilter.Linear: tex1.minFilter = 0; break; - case PICATextureFilter.Nearest: tex1.minFilter = 1; break; + case PICATextureFilter.Linear: tex1.MagFilter = STTextureMagFilter.Linear; break; + case PICATextureFilter.Nearest: tex1.MagFilter = STTextureMagFilter.Nearest; break; } switch (TextureMapInfo.MipFilter) { - case PICATextureFilter.Linear: tex1.mipDetail = 0; break; - case PICATextureFilter.Nearest: tex1.mipDetail = 1; break; - } - - switch (TextureMapInfo.WrapV) - { - case PICATextureWrap.Repeat: tex1.wrapModeT = 0; break; - case PICATextureWrap.Mirror: tex1.wrapModeT = 1; break; - case PICATextureWrap.ClampToEdge: tex1.wrapModeT = 2; break; - case PICATextureWrap.ClampToBorder: tex1.wrapModeT = 2; break; + case PICATextureFilter.Linear: tex1.MagFilter = STTextureMagFilter.Linear; break; + case PICATextureFilter.Nearest: tex1.MagFilter = STTextureMagFilter.Nearest; break; } diff --git a/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL.cs b/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL.cs index 1d0660b7..071a92de 100644 --- a/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL.cs +++ b/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL.cs @@ -983,8 +983,8 @@ namespace Bfres.Structs //Note we can't add/remove samplers so we must fill these slots foreach (var t in fmat.TextureMaps) { - t.wrapModeS = 0; - t.wrapModeT = 0; + t.WrapModeS = STTextureWrapMode.Repeat; + t.WrapModeT = STTextureWrapMode.Repeat; switch (t.Type) { @@ -1076,9 +1076,9 @@ namespace Bfres.Structs if (t.Type == tex.Type) { t.Name = tex.Name; - t.wrapModeS = tex.wrapModeS; - t.wrapModeT = tex.wrapModeT; - t.wrapModeW = tex.wrapModeW; + t.WrapModeS = tex.WrapModeS; + t.WrapModeT = tex.WrapModeT; + t.WrapModeW = tex.WrapModeW; t.Type = tex.Type; } } diff --git a/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL/FMAT.cs b/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL/FMAT.cs index fdae9359..ce7c976e 100644 --- a/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL/FMAT.cs +++ b/File_Format_Library/FileFormats/BFRES/Bfres Structs/SubFiles/FMDL/FMAT.cs @@ -791,7 +791,7 @@ namespace Bfres.Structs texSampler.LodBias = matTex.BiasLod; texSampler.MaxLod = matTex.MaxLod; - texSampler.MinLod = matTex.minFilter; + texSampler.MinLod = matTex.MinLod; return texSampler; } diff --git a/File_Format_Library/FileFormats/BFRES/BfresSwitch.cs b/File_Format_Library/FileFormats/BFRES/BfresSwitch.cs index ebe321f3..6153fc9d 100644 --- a/File_Format_Library/FileFormats/BFRES/BfresSwitch.cs +++ b/File_Format_Library/FileFormats/BFRES/BfresSwitch.cs @@ -690,19 +690,19 @@ namespace FirstPlugin MatTexture texture = new MatTexture(); texture.switchSampler = mat.Samplers[id]; - texture.wrapModeS = (int)mat.Samplers[id].WrapModeU; - texture.wrapModeT = (int)mat.Samplers[id].WrapModeV; - texture.wrapModeW = (int)mat.Samplers[id].WrapModeW; + texture.WrapModeS = (STTextureWrapMode)mat.Samplers[id].WrapModeU; + texture.WrapModeT = (STTextureWrapMode)mat.Samplers[id].WrapModeV; + texture.WrapModeW = (STTextureWrapMode)mat.Samplers[id].WrapModeW; texture.SamplerName = mat.SamplerDict.GetKey(id); if (mat.Samplers[id].ShrinkXY == Sampler.ShrinkFilterModes.Points) - texture.minFilter = 1; + texture.MinFilter = STTextureMinFilter.Nearest; else - texture.minFilter = 0; + texture.MinFilter = STTextureMinFilter.Linear; if (mat.Samplers[id].ExpandXY == Sampler.ExpandFilterModes.Points) - texture.magFilter = 1; + texture.MagFilter = STTextureMagFilter.Nearest; else - texture.magFilter = 0; + texture.MagFilter = STTextureMagFilter.Linear; string useSampler = texture.SamplerName; diff --git a/File_Format_Library/FileFormats/BFRES/BfresWiiU.cs b/File_Format_Library/FileFormats/BFRES/BfresWiiU.cs index 8447b380..38e4bce0 100644 --- a/File_Format_Library/FileFormats/BFRES/BfresWiiU.cs +++ b/File_Format_Library/FileFormats/BFRES/BfresWiiU.cs @@ -474,9 +474,9 @@ namespace FirstPlugin texture.MaxLod = mat.Samplers[id].TexSampler.MaxLod; texture.BiasLod = mat.Samplers[id].TexSampler.LodBias; - texture.wrapModeS = (int)mat.Samplers[id].TexSampler.ClampX; - texture.wrapModeT = (int)mat.Samplers[id].TexSampler.ClampY; - texture.wrapModeW = (int)mat.Samplers[id].TexSampler.ClampZ; + texture.WrapModeS = (STTextureWrapMode)mat.Samplers[id].TexSampler.ClampX; + texture.WrapModeT = (STTextureWrapMode)mat.Samplers[id].TexSampler.ClampY; + texture.WrapModeW = (STTextureWrapMode)mat.Samplers[id].TexSampler.ClampZ; mat.Samplers.TryGetKey(mat.Samplers[id], out texture.SamplerName); string useSampler = texture.SamplerName; @@ -487,13 +487,13 @@ namespace FirstPlugin if (mat.Samplers[id].TexSampler.MinFilter == GX2TexXYFilterType.Point) - texture.minFilter = 1; + texture.MinFilter = STTextureMinFilter.Nearest; if (mat.Samplers[id].TexSampler.MagFilter == GX2TexXYFilterType.Point) - texture.magFilter = 1; + texture.MagFilter = STTextureMagFilter.Nearest; if (mat.Samplers[id].TexSampler.MinFilter == GX2TexXYFilterType.Bilinear) - texture.minFilter = 0; + texture.MinFilter = STTextureMinFilter.Linear; if (mat.Samplers[id].TexSampler.MagFilter == GX2TexXYFilterType.Bilinear) - texture.magFilter = 0; + texture.MagFilter = STTextureMagFilter.Linear; if (Runtime.activeGame == Runtime.ActiveGame.MK8D) { diff --git a/File_Format_Library/FileFormats/BMD/BMDMaterialWrapper.cs b/File_Format_Library/FileFormats/BMD/BMDMaterialWrapper.cs index 76f3bc91..c8c542c4 100644 --- a/File_Format_Library/FileFormats/BMD/BMDMaterialWrapper.cs +++ b/File_Format_Library/FileFormats/BMD/BMDMaterialWrapper.cs @@ -41,10 +41,10 @@ namespace FirstPlugin matTexture.Type = STGenericMatTexture.TextureType.Diffuse; matTexture.textureUnit = textureUnit++; - matTexture.wrapModeS = (int)GXToOpenGL.GetWrapMode(ParentModel.Textures[texIndex].WrapS); - matTexture.wrapModeT = (int)GXToOpenGL.GetWrapMode(ParentModel.Textures[texIndex].WrapT); - matTexture.minFilter = (int)GXToOpenGL.GetMinFilter(ParentModel.Textures[texIndex].MinFilter); - matTexture.magFilter = (int)GXToOpenGL.GetMinFilter(ParentModel.Textures[texIndex].MagFilter); + matTexture.WrapModeS = (STTextureWrapMode)GXToOpenGL.GetWrapMode(ParentModel.Textures[texIndex].WrapS); + matTexture.WrapModeT = (STTextureWrapMode)GXToOpenGL.GetWrapMode(ParentModel.Textures[texIndex].WrapT); + matTexture.MinFilter = (STTextureMinFilter)GXToOpenGL.GetMinFilter(ParentModel.Textures[texIndex].MinFilter); + matTexture.MagFilter = (STTextureMagFilter)GXToOpenGL.GetMinFilter(ParentModel.Textures[texIndex].MagFilter); TextureMaps.Add(matTexture); diff --git a/File_Format_Library/FileFormats/GFBMDL/GFBMDL.cs b/File_Format_Library/FileFormats/GFBMDL/GFBMDL.cs index 3e946054..eb2e7210 100644 --- a/File_Format_Library/FileFormats/GFBMDL/GFBMDL.cs +++ b/File_Format_Library/FileFormats/GFBMDL/GFBMDL.cs @@ -270,8 +270,8 @@ namespace FirstPlugin STGenericMatTexture matTexture = new STGenericMatTexture(); matTexture.Name = textureMap.Name; matTexture.textureUnit = textureUnit++; - matTexture.wrapModeS = 1; - matTexture.wrapModeT = 0; + matTexture.WrapModeS = STTextureWrapMode.Mirror; + matTexture.WrapModeT = STTextureWrapMode.Repeat; if (textureMap.Effect == "Col0Tex") { diff --git a/File_Format_Library/FileFormats/Grezzo/CMB.cs b/File_Format_Library/FileFormats/Grezzo/CMB.cs index 93344965..bb297bd3 100644 --- a/File_Format_Library/FileFormats/Grezzo/CMB.cs +++ b/File_Format_Library/FileFormats/Grezzo/CMB.cs @@ -203,10 +203,8 @@ namespace FirstPlugin { if (tex.TextureIndex != -1) { - CMBTextureMapWrapper matTexture = new CMBTextureMapWrapper(); + CMBTextureMapWrapper matTexture = new CMBTextureMapWrapper(tex); matTexture.TextureIndex = tex.TextureIndex; - matTexture.wrapModeS = tex.WrapS; - matTexture.wrapModeT = tex.WrapT; material.TextureMaps.Add(matTexture); if (tex.TextureIndex < Renderer.TextureList.Count && tex.TextureIndex >= 0) @@ -390,6 +388,54 @@ namespace FirstPlugin public class CMBTextureMapWrapper : STGenericMatTexture { public int TextureIndex { get; set; } + + public TextureMap TextureMapData; + + public CMBTextureMapWrapper(TextureMap texMap) + { + TextureMapData = texMap; + + this.WrapModeS = ConvertWrapMode(TextureMapData.WrapS); + this.WrapModeT = ConvertWrapMode(TextureMapData.WrapT); + this.MinFilter = ConvertMinFilterMode(TextureMapData.MinFiler); + this.MagFilter = ConvertMagFilterMode(TextureMapData.MagFiler); + } + + private STTextureMinFilter ConvertMinFilterMode(ushort PicaFilterMode) + { + switch ((TextureFilter)PicaFilterMode) + { + case TextureFilter.LINEAR: return STTextureMinFilter.Linear; + case TextureFilter.LINEAR_MIPMAP_LINEAR: return STTextureMinFilter.LinearMipMapNearest; + case TextureFilter.LINEAR_MIPMAP_NEAREST: return STTextureMinFilter.NearestMipmapLinear; + case TextureFilter.NEAREST: return STTextureMinFilter.Nearest; + case TextureFilter.NEAREST_MIPMAP_LINEAR: return STTextureMinFilter.NearestMipmapLinear; + case TextureFilter.NEAREST_MIPMAP_NEAREST: return STTextureMinFilter.NearestMipmapNearest; + default: return 0; + } + } + + private STTextureMagFilter ConvertMagFilterMode(ushort PicaFilterMode) + { + switch ((TextureFilter)PicaFilterMode) + { + case TextureFilter.LINEAR: return STTextureMagFilter.Linear; + case TextureFilter.NEAREST: return STTextureMagFilter.Nearest; + default: return 0; + } + } + + private STTextureWrapMode ConvertWrapMode(ushort PicaWrapMode) + { + switch ((CMBTextureWrapMode)PicaWrapMode) + { + case CMBTextureWrapMode.REPEAT: return STTextureWrapMode.Repeat; + case CMBTextureWrapMode.MIRRORED_REPEAT: return STTextureWrapMode.Mirror; + case CMBTextureWrapMode.CLAMP: return STTextureWrapMode.Clamp; + case CMBTextureWrapMode.CLAMP_TO_EDGE: return STTextureWrapMode.Clamp; + default: return STTextureWrapMode.Repeat; + } + } } public class CmbMeshWrapper : GenericRenderedObject diff --git a/File_Format_Library/FileFormats/Grezzo/CMB_Enums.cs b/File_Format_Library/FileFormats/Grezzo/CMB_Enums.cs index 468b904a..36a0381b 100644 --- a/File_Format_Library/FileFormats/Grezzo/CMB_Enums.cs +++ b/File_Format_Library/FileFormats/Grezzo/CMB_Enums.cs @@ -50,7 +50,7 @@ namespace Grezzo.CmbEnums SMOOTH_SKINNING = 0x02, } - public enum TextureWrapMode + public enum CMBTextureWrapMode { CLAMP = 0x2900, REPEAT = 0x2901, diff --git a/File_Format_Library/GL/BCRES_Render.cs b/File_Format_Library/GL/BCRES_Render.cs index 71fb3d61..1b5bf948 100644 --- a/File_Format_Library/GL/BCRES_Render.cs +++ b/File_Format_Library/GL/BCRES_Render.cs @@ -275,10 +275,10 @@ namespace FirstPlugin { // GL.ActiveTexture(TextureUnit.Texture0 + texid); GL.BindTexture(TextureTarget.Texture2D, texid); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)STGenericMatTexture.wrapmode[tex.wrapModeS]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)STGenericMatTexture.wrapmode[tex.wrapModeT]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[tex.minFilter]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[tex.magFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)STGenericMatTexture.wrapmode[tex.WrapModeS]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)STGenericMatTexture.wrapmode[tex.WrapModeT]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[tex.MinFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[tex.MagFilter]); GL.TexParameter(TextureTarget.Texture2D, (TextureParameterName)ExtTextureFilterAnisotropic.TextureMaxAnisotropyExt, 0.0f); } diff --git a/File_Format_Library/GL/BFRES_Render.cs b/File_Format_Library/GL/BFRES_Render.cs index 9d35ec43..d56e82ec 100644 --- a/File_Format_Library/GL/BFRES_Render.cs +++ b/File_Format_Library/GL/BFRES_Render.cs @@ -704,10 +704,10 @@ namespace FirstPlugin // GL.ActiveTexture(TextureUnit.Texture0 + texid); GL.BindTexture(TextureTarget.Texture2D, texture.RenderableTex.TexID); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)MatTexture.wrapmode[tex.wrapModeS]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)MatTexture.wrapmode[tex.wrapModeT]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)MatTexture.minfilter[tex.minFilter]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)MatTexture.magfilter[tex.magFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)MatTexture.wrapmode[tex.WrapModeS]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)MatTexture.wrapmode[tex.WrapModeT]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)MatTexture.minfilter[tex.MinFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)MatTexture.magfilter[tex.MagFilter]); GL.TexParameter(TextureTarget.Texture2D, (TextureParameterName)ExtTextureFilterAnisotropic.TextureMaxAnisotropyExt, 0.0f); } private void DrawModel(FSHP m, FMDL mdl, SF.Shader shader, bool ModelSelected) diff --git a/File_Format_Library/GL/GFBMDL_Render.cs b/File_Format_Library/GL/GFBMDL_Render.cs index 776214d0..cac4515b 100644 --- a/File_Format_Library/GL/GFBMDL_Render.cs +++ b/File_Format_Library/GL/GFBMDL_Render.cs @@ -376,10 +376,10 @@ namespace FirstPlugin // GL.ActiveTexture(TextureUnit.Texture0 + texid); GL.BindTexture(TextureTarget.Texture2D, texture.RenderableTex.TexID); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)STGenericMatTexture.wrapmode[tex.wrapModeS]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)STGenericMatTexture.wrapmode[tex.wrapModeT]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[tex.minFilter]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[tex.magFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)STGenericMatTexture.wrapmode[tex.WrapModeS]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)STGenericMatTexture.wrapmode[tex.WrapModeT]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[tex.MinFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[tex.MagFilter]); GL.TexParameter(TextureTarget.Texture2D, (TextureParameterName)ExtTextureFilterAnisotropic.TextureMaxAnisotropyExt, 0.0f); } diff --git a/File_Format_Library/GUI/BFRES/Materials/BfresMaterialEditor.cs b/File_Format_Library/GUI/BFRES/Materials/BfresMaterialEditor.cs index 7779cfc0..e2349447 100644 --- a/File_Format_Library/GUI/BFRES/Materials/BfresMaterialEditor.cs +++ b/File_Format_Library/GUI/BFRES/Materials/BfresMaterialEditor.cs @@ -112,12 +112,10 @@ namespace FirstPlugin.Forms TextureMap.UVScale = Utils.ToVec4(material.matparam["gsys_bake_st1"].ValueFloat).Xy; TextureMap.UVTranslate = Utils.ToVec4(material.matparam["gsys_bake_st1"].ValueFloat).Zw; } - TextureMap.wrapModeS = texmap.wrapModeS; - TextureMap.wrapModeT = texmap.wrapModeT; - TextureMap.mipDetail = texmap.mipDetail; - TextureMap.minFilter = texmap.minFilter; - TextureMap.magFilter = texmap.mapMode; - TextureMap.mapMode = texmap.mapMode; + TextureMap.WrapModeS = texmap.WrapModeS; + TextureMap.WrapModeT = texmap.WrapModeT; + TextureMap.MinFilter = texmap.MinFilter; + TextureMap.MagFilter = texmap.MagFilter; TextureMap.texture = genericTexture; return TextureMap; diff --git a/File_Format_Library/GUI/BFRES/Materials/NewFolder1/SamplerEditor.cs b/File_Format_Library/GUI/BFRES/Materials/NewFolder1/SamplerEditor.cs index f38a8cc8..8ec56626 100644 --- a/File_Format_Library/GUI/BFRES/Materials/NewFolder1/SamplerEditor.cs +++ b/File_Format_Library/GUI/BFRES/Materials/NewFolder1/SamplerEditor.cs @@ -417,9 +417,9 @@ namespace FirstPlugin.Forms tex.FragShaderSampler = "_a1"; tex.Name = "Untitled"; tex.Type = Toolbox.Library.STGenericMatTexture.TextureType.Unknown; - tex.wrapModeS = 0; - tex.wrapModeT = 0; - tex.wrapModeW = 2; + tex.WrapModeS = Toolbox.Library.STTextureWrapMode.Repeat; + tex.WrapModeT = Toolbox.Library.STTextureWrapMode.Repeat; + tex.WrapModeW = Toolbox.Library.STTextureWrapMode.Clamp; if (material.GetResFileU() != null) { diff --git a/File_Format_Library/GUI/BFRES/Materials/SamplerEditor.cs b/File_Format_Library/GUI/BFRES/Materials/SamplerEditor.cs index 9851e37b..8e5ba714 100644 --- a/File_Format_Library/GUI/BFRES/Materials/SamplerEditor.cs +++ b/File_Format_Library/GUI/BFRES/Materials/SamplerEditor.cs @@ -187,51 +187,51 @@ namespace FirstPlugin.Forms if (ActiveMatTexture.wiiUSampler != null) { - ActiveMatTexture.wrapModeS = SetWrapMode((int)ActiveMatTexture.wiiUSampler.ClampX); - ActiveMatTexture.wrapModeT = SetWrapMode((int)ActiveMatTexture.wiiUSampler.ClampY); - ActiveMatTexture.wrapModeW = SetWrapMode((int)ActiveMatTexture.wiiUSampler.ClampZ); + ActiveMatTexture.WrapModeS = SetWrapMode((int)ActiveMatTexture.wiiUSampler.ClampX); + ActiveMatTexture.WrapModeT = SetWrapMode((int)ActiveMatTexture.wiiUSampler.ClampY); + ActiveMatTexture.WrapModeW = SetWrapMode((int)ActiveMatTexture.wiiUSampler.ClampZ); if (ActiveMatTexture.wiiUSampler.MinFilter == ResUGX2.GX2TexXYFilterType.Point) - ActiveMatTexture.minFilter = 1; + ActiveMatTexture.MinFilter = STTextureMinFilter.Nearest; if (ActiveMatTexture.wiiUSampler.MagFilter == ResUGX2.GX2TexXYFilterType.Point) - ActiveMatTexture.magFilter = 1; + ActiveMatTexture.MagFilter = STTextureMagFilter.Nearest; if (ActiveMatTexture.wiiUSampler.MinFilter == ResUGX2.GX2TexXYFilterType.Bilinear) - ActiveMatTexture.minFilter = 0; + ActiveMatTexture.MinFilter = STTextureMinFilter.Linear; if (ActiveMatTexture.wiiUSampler.MagFilter == ResUGX2.GX2TexXYFilterType.Bilinear) - ActiveMatTexture.magFilter = 0; + ActiveMatTexture.MagFilter = STTextureMagFilter.Linear; } else { - ActiveMatTexture.wrapModeS = SetWrapMode((int)ActiveMatTexture.switchSampler.WrapModeU); - ActiveMatTexture.wrapModeT = SetWrapMode((int)ActiveMatTexture.switchSampler.WrapModeV); - ActiveMatTexture.wrapModeW = SetWrapMode((int)ActiveMatTexture.switchSampler.WrapModeW); + ActiveMatTexture.WrapModeS = SetWrapMode((int)ActiveMatTexture.switchSampler.WrapModeU); + ActiveMatTexture.WrapModeT = SetWrapMode((int)ActiveMatTexture.switchSampler.WrapModeV); + ActiveMatTexture.WrapModeW = SetWrapMode((int)ActiveMatTexture.switchSampler.WrapModeW); if (ActiveMatTexture.switchSampler.ShrinkXY == ResNX.Sampler.ShrinkFilterModes.Points) - ActiveMatTexture.minFilter = 1; + ActiveMatTexture.MinFilter = STTextureMinFilter.Nearest; if (ActiveMatTexture.switchSampler.ExpandXY == ResNX.Sampler.ExpandFilterModes.Points) - ActiveMatTexture.magFilter = 1; + ActiveMatTexture.MagFilter = STTextureMagFilter.Nearest; if (ActiveMatTexture.switchSampler.ShrinkXY == ResNX.Sampler.ShrinkFilterModes.Linear) - ActiveMatTexture.minFilter = 0; + ActiveMatTexture.MinFilter = STTextureMinFilter.Linear; if (ActiveMatTexture.switchSampler.ExpandXY == ResNX.Sampler.ExpandFilterModes.Linear) - ActiveMatTexture.magFilter = 0; + ActiveMatTexture.MagFilter = STTextureMagFilter.Linear; } LibraryGUI.UpdateViewport(); } - private int SetWrapMode(int wrapMode) + private STTextureWrapMode SetWrapMode(int wrapMode) { switch (wrapMode) { case (int)ResNX.GFX.TexClamp.Repeat: - return 0; + return STTextureWrapMode.Repeat; case (int)ResNX.GFX.TexClamp.Mirror: - return 1; + return STTextureWrapMode.Mirror; case (int)ResNX.GFX.TexClamp.Clamp: case (int)ResNX.GFX.TexClamp.ClampToEdge: - return 2; + return STTextureWrapMode.Clamp; default: - return 2; + return STTextureWrapMode.Clamp; } } @@ -368,9 +368,9 @@ namespace FirstPlugin.Forms tex.FragShaderSampler = "_a0"; tex.Name = "Untitled"; tex.Type = Toolbox.Library.STGenericMatTexture.TextureType.Unknown; - tex.wrapModeS = 0; - tex.wrapModeT = 0; - tex.wrapModeW = 2; + tex.WrapModeS = STTextureWrapMode.Repeat; + tex.WrapModeT = STTextureWrapMode.Repeat; + tex.WrapModeW = STTextureWrapMode.Clamp; if (material.GetResFileU() != null) { diff --git a/File_Format_Library/GUI/BFRES/Texture Sampler/SamplerEditorSimple.cs b/File_Format_Library/GUI/BFRES/Texture Sampler/SamplerEditorSimple.cs index 5d0e6d63..82329f71 100644 --- a/File_Format_Library/GUI/BFRES/Texture Sampler/SamplerEditorSimple.cs +++ b/File_Format_Library/GUI/BFRES/Texture Sampler/SamplerEditorSimple.cs @@ -77,33 +77,34 @@ namespace FirstPlugin.Forms { if (ActiveMatTexture.wiiUSampler != null) { - ActiveMatTexture.wrapModeS = (int)ActiveMatTexture.wiiUSampler.ClampX; - ActiveMatTexture.wrapModeT = (int)ActiveMatTexture.wiiUSampler.ClampY; - ActiveMatTexture.wrapModeW = (int)ActiveMatTexture.wiiUSampler.ClampZ; + ActiveMatTexture.WrapModeS = (STTextureWrapMode)ActiveMatTexture.wiiUSampler.ClampX; + ActiveMatTexture.WrapModeT = (STTextureWrapMode)ActiveMatTexture.wiiUSampler.ClampY; + ActiveMatTexture.WrapModeW = (STTextureWrapMode)ActiveMatTexture.wiiUSampler.ClampZ; if (ActiveMatTexture.wiiUSampler.MinFilter == ResUGX2.GX2TexXYFilterType.Point) - ActiveMatTexture.minFilter = 1; + ActiveMatTexture.MinFilter = STTextureMinFilter.Nearest; if (ActiveMatTexture.wiiUSampler.MagFilter == ResUGX2.GX2TexXYFilterType.Point) - ActiveMatTexture.magFilter = 1; + ActiveMatTexture.MagFilter = STTextureMagFilter.Nearest; if (ActiveMatTexture.wiiUSampler.MinFilter == ResUGX2.GX2TexXYFilterType.Bilinear) - ActiveMatTexture.minFilter = 0; + ActiveMatTexture.MinFilter = STTextureMinFilter.Linear; if (ActiveMatTexture.wiiUSampler.MagFilter == ResUGX2.GX2TexXYFilterType.Bilinear) - ActiveMatTexture.magFilter = 0; + ActiveMatTexture.MagFilter = STTextureMagFilter.Linear; } else { - ActiveMatTexture.wrapModeS = (int)ActiveMatTexture.switchSampler.WrapModeU; - ActiveMatTexture.wrapModeT = (int)ActiveMatTexture.switchSampler.WrapModeV; - ActiveMatTexture.wrapModeW = (int)ActiveMatTexture.switchSampler.WrapModeW; + ActiveMatTexture.WrapModeS = (STTextureWrapMode)ActiveMatTexture.switchSampler.WrapModeU; + ActiveMatTexture.WrapModeT = (STTextureWrapMode)ActiveMatTexture.switchSampler.WrapModeV; + ActiveMatTexture.WrapModeW = (STTextureWrapMode)ActiveMatTexture.switchSampler.WrapModeW; + if (ActiveMatTexture.switchSampler.ShrinkXY == Sampler.ShrinkFilterModes.Points) - ActiveMatTexture.minFilter = 1; + ActiveMatTexture.MinFilter = STTextureMinFilter.Nearest; if (ActiveMatTexture.switchSampler.ExpandXY == Sampler.ExpandFilterModes.Points) - ActiveMatTexture.magFilter = 1; + ActiveMatTexture.MagFilter = STTextureMagFilter.Nearest; if (ActiveMatTexture.switchSampler.ShrinkXY == Sampler.ShrinkFilterModes.Linear) - ActiveMatTexture.minFilter = 0; + ActiveMatTexture.MinFilter = STTextureMinFilter.Linear; if (ActiveMatTexture.switchSampler.ExpandXY == Sampler.ExpandFilterModes.Linear) - ActiveMatTexture.magFilter = 0; + ActiveMatTexture.MagFilter = STTextureMagFilter.Linear; } LibraryGUI.UpdateViewport(); diff --git a/Switch_Toolbox_Library/FileFormats/Assimp/Assimp.cs b/Switch_Toolbox_Library/FileFormats/Assimp/Assimp.cs index 6897ad7a..1ead1d80 100644 --- a/Switch_Toolbox_Library/FileFormats/Assimp/Assimp.cs +++ b/Switch_Toolbox_Library/FileFormats/Assimp/Assimp.cs @@ -404,27 +404,27 @@ namespace Toolbox.Library } matTex.Name = System.IO.Path.GetFileNameWithoutExtension(tex.FilePath); - matTex.wrapModeS = SetWrapMode(tex.WrapModeU); - matTex.wrapModeT = SetWrapMode(tex.WrapModeV); + matTex.WrapModeS = SetWrapMode(tex.WrapModeU); + matTex.WrapModeT = SetWrapMode(tex.WrapModeV); STConsole.WriteLine($"Getting assimp texture slot {matTex.Name} Type {matTex.Type}"); return matTex; } - private int SetWrapMode(TextureWrapMode wrap) + private STTextureWrapMode SetWrapMode(TextureWrapMode wrap) { switch (wrap) { case TextureWrapMode.Wrap: - return 0; + return STTextureWrapMode.Repeat; case TextureWrapMode.Mirror: - return 1; + return STTextureWrapMode.Mirror; case TextureWrapMode.Clamp: - return 2; + return STTextureWrapMode.Clamp; case TextureWrapMode.Decal: - return 0; + return STTextureWrapMode.Repeat; default: - return 0; + return STTextureWrapMode.Repeat; } } diff --git a/Switch_Toolbox_Library/FileFormats/Assimp/AssimpSaver.cs b/Switch_Toolbox_Library/FileFormats/Assimp/AssimpSaver.cs index 7fe67ec9..1829e6f1 100644 --- a/Switch_Toolbox_Library/FileFormats/Assimp/AssimpSaver.cs +++ b/Switch_Toolbox_Library/FileFormats/Assimp/AssimpSaver.cs @@ -556,7 +556,7 @@ namespace Toolbox.Library continue; TextureSlot slot2 = new TextureSlot(path, ConvertToAssimpTextureType(tex.Type), 0, TextureMapping.FromUV, - 0, 1.0f, Assimp.TextureOperation.Add, ConvertToAssimpWrapType(tex.wrapModeS), ConvertToAssimpWrapType(tex.wrapModeT), 0); + 0, 1.0f, Assimp.TextureOperation.Add, ConvertToAssimpWrapType(tex.WrapModeS), ConvertToAssimpWrapType(tex.WrapModeT), 0); material.AddMaterialTexture(ref slot2); } @@ -565,13 +565,13 @@ namespace Toolbox.Library } - private static Assimp.TextureWrapMode ConvertToAssimpWrapType(int type) + private static Assimp.TextureWrapMode ConvertToAssimpWrapType(STTextureWrapMode type) { switch (type) { - case 0: return TextureWrapMode.Wrap; - case 1: return TextureWrapMode.Mirror; - case 2: return TextureWrapMode.Clamp; + case STTextureWrapMode.Repeat: return TextureWrapMode.Wrap; + case STTextureWrapMode.Mirror: return TextureWrapMode.Mirror; + case STTextureWrapMode.Clamp: return TextureWrapMode.Clamp; default: return TextureWrapMode.Wrap; } diff --git a/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor.cs b/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor.cs index cdb07f5f..6cce2dc7 100644 --- a/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor.cs +++ b/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor.cs @@ -34,11 +34,14 @@ namespace Toolbox.Library.Forms public STGenericTexture texture; public int UvChannelIndex; public int mapMode = 0; - public int wrapModeS = 1; - public int wrapModeT = 1; - public int minFilter = 3; - public int magFilter = 2; - public int mipDetail = 6; + + public STTextureWrapMode WrapModeS = STTextureWrapMode.Repeat; + public STTextureWrapMode WrapModeT = STTextureWrapMode.Repeat; + public STTextureWrapMode WrapModeW = STTextureWrapMode.Clamp; + + public STTextureMinFilter MinFilter = STTextureMinFilter.Linear; + public STTextureMagFilter MagFilter = STTextureMagFilter.Linear; + public uint texWidth = 0; public uint texHeight = 0; } @@ -277,12 +280,12 @@ namespace Toolbox.Library.Forms //Draws a textured plan for our uvs to show on GL.Enable(EnableCap.Texture2D); GL.BindTexture(TextureTarget.Texture2D, texid); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (float)STGenericMatTexture.wrapmode[activeTexture.wrapModeS]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (float)STGenericMatTexture.wrapmode[activeTexture.wrapModeT]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (float)STGenericMatTexture.wrapmode[activeTexture.WrapModeS]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (float)STGenericMatTexture.wrapmode[activeTexture.WrapModeT]); // GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)STGenericMatTexture.wrapmode[activeTexture.wrapModeS]); // GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)STGenericMatTexture.wrapmode[activeTexture.wrapModeT]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[activeTexture.minFilter]); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[activeTexture.magFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[activeTexture.MinFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[activeTexture.MagFilter]); } diff --git a/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor2.cs b/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor2.cs index 2789c67f..cf1bfc05 100644 --- a/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor2.cs +++ b/Switch_Toolbox_Library/Forms/Editors/UV/UVEditor2.cs @@ -335,13 +335,13 @@ namespace Toolbox.Library.Forms.test private void DrawTexturedPlane(float scale, uint TextureWidth, uint TextureHeight) { //Draws a textured plan for our uvs to show on - GL.Enable(EnableCap.Texture2D); + /* GL.Enable(EnableCap.Texture2D); GL.BindTexture(TextureTarget.Texture2D, texid); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (float)STGenericMatTexture.wrapmode[activeTexture.wrapModeS]); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (float)STGenericMatTexture.wrapmode[activeTexture.wrapModeT]); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[activeTexture.minFilter]); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[activeTexture.magFilter]); - + */ float HalfWidth = (float)gL_ControlLegacy2D1.Width / 2.0f; float HalfHeight = (float)gL_ControlLegacy2D1.Height / 2.0f; diff --git a/Switch_Toolbox_Library/Generics/Materials/GenericMatTexture.cs b/Switch_Toolbox_Library/Generics/Materials/GenericMatTexture.cs index 5d85146a..142b494e 100644 --- a/Switch_Toolbox_Library/Generics/Materials/GenericMatTexture.cs +++ b/Switch_Toolbox_Library/Generics/Materials/GenericMatTexture.cs @@ -7,15 +7,38 @@ using OpenTK.Graphics.OpenGL; namespace Toolbox.Library { + public enum STTextureWrapMode + { + Repeat, + Mirror, + Clamp, + } + + public enum STTextureMagFilter + { + Nearest, + Linear, + } + + public enum STTextureMinFilter + { + LinearMipMapNearest, + Nearest, + Linear, + NearestMipmapLinear, + NearestMipmapNearest, + } + public class STGenericMatTexture { public int mapMode = 0; - public int wrapModeS = 1; - public int wrapModeT = 1; - public int wrapModeW = 1; //Used for 3D textures - public int minFilter = 3; - public int magFilter = 2; - public int mipDetail = 6; + public STTextureWrapMode WrapModeS = STTextureWrapMode.Repeat; + public STTextureWrapMode WrapModeT = STTextureWrapMode.Repeat; + public STTextureWrapMode WrapModeW = STTextureWrapMode.Clamp; + + public STTextureMinFilter MinFilter = STTextureMinFilter.Linear; + public STTextureMagFilter MagFilter = STTextureMagFilter.Linear; + public string Name; public string SamplerName; public int textureUnit; @@ -56,24 +79,28 @@ namespace Toolbox.Library SubSurfaceScattering = 15, } - public static readonly Dictionary minfilter = new Dictionary() + public static readonly Dictionary minfilter = new Dictionary() { - { 0x00, TextureMinFilter.LinearMipmapLinear}, - { 0x01, TextureMinFilter.Nearest}, - { 0x02, TextureMinFilter.Linear}, - { 0x03, TextureMinFilter.NearestMipmapLinear}, + { STTextureMinFilter.LinearMipMapNearest, TextureMinFilter.LinearMipmapLinear}, + { STTextureMinFilter.Nearest, TextureMinFilter.Nearest}, + { STTextureMinFilter.Linear, TextureMinFilter.Linear}, + { STTextureMinFilter.NearestMipmapLinear, TextureMinFilter.NearestMipmapLinear}, + { STTextureMinFilter.NearestMipmapNearest, TextureMinFilter.NearestMipmapNearest}, }; - public static readonly Dictionary magfilter = new Dictionary() + public static readonly Dictionary magfilter = new Dictionary() { - { 0x00, TextureMagFilter.Linear}, - { 0x01, TextureMagFilter.Nearest}, - { 0x02, TextureMagFilter.Linear} + { STTextureMagFilter.Linear, TextureMagFilter.Linear}, + { STTextureMagFilter.Nearest, TextureMagFilter.Nearest}, + { (STTextureMagFilter)3, TextureMagFilter.Linear}, }; - public static Dictionary wrapmode = new Dictionary(){ - { 0x00, TextureWrapMode.Repeat}, - { 0x01, TextureWrapMode.MirroredRepeat}, - { 0x02, TextureWrapMode.ClampToEdge}, - { 0x03, TextureWrapMode.MirroredRepeat}, + + public static Dictionary wrapmode = new Dictionary(){ + { STTextureWrapMode.Repeat, TextureWrapMode.Repeat}, + { STTextureWrapMode.Mirror, TextureWrapMode.MirroredRepeat}, + { STTextureWrapMode.Clamp, TextureWrapMode.ClampToEdge}, + { (STTextureWrapMode)3, TextureWrapMode.ClampToEdge}, + { (STTextureWrapMode)4, TextureWrapMode.ClampToEdge}, + { (STTextureWrapMode)5, TextureWrapMode.ClampToEdge}, }; } } diff --git a/Switch_Toolbox_Library/Rendering/GenericModelRenderer/GenericModelRenderer.cs b/Switch_Toolbox_Library/Rendering/GenericModelRenderer/GenericModelRenderer.cs index 5c1b4e95..74b64395 100644 --- a/Switch_Toolbox_Library/Rendering/GenericModelRenderer/GenericModelRenderer.cs +++ b/Switch_Toolbox_Library/Rendering/GenericModelRenderer/GenericModelRenderer.cs @@ -362,10 +362,10 @@ namespace Toolbox.Library.Rendering // GL.ActiveTexture(TextureUnit.Texture0 + texid); GL.BindTexture(TextureTarget.Texture2D, texture.RenderableTex.TexID); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)tex.wrapModeS); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)tex.wrapModeT); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)tex.minFilter); - GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)tex.magFilter); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)STGenericMatTexture.wrapmode[tex.WrapModeS]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)STGenericMatTexture.wrapmode[tex.WrapModeT]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)STGenericMatTexture.minfilter[tex.MinFilter]); + GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)STGenericMatTexture.magfilter[tex.MagFilter]); GL.TexParameter(TextureTarget.Texture2D, (TextureParameterName)ExtTextureFilterAnisotropic.TextureMaxAnisotropyExt, 0.0f); } diff --git a/Switch_Toolbox_Library/FileFormats/3DS/ETC1.cs b/Switch_Toolbox_Library/Texture Decoding/3DS/ETC1.cs similarity index 100% rename from Switch_Toolbox_Library/FileFormats/3DS/ETC1.cs rename to Switch_Toolbox_Library/Texture Decoding/3DS/ETC1.cs diff --git a/Switch_Toolbox_Library/Toolbox.Library.dll b/Switch_Toolbox_Library/Toolbox.Library.dll index 88c96e5d..ec69a145 100644 Binary files a/Switch_Toolbox_Library/Toolbox.Library.dll and b/Switch_Toolbox_Library/Toolbox.Library.dll differ diff --git a/Switch_Toolbox_Library/Toolbox.Library.pdb b/Switch_Toolbox_Library/Toolbox.Library.pdb index 1053e6e9..b77b005f 100644 Binary files a/Switch_Toolbox_Library/Toolbox.Library.pdb and b/Switch_Toolbox_Library/Toolbox.Library.pdb differ diff --git a/Switch_Toolbox_Library/Toolbox_Library.csproj b/Switch_Toolbox_Library/Toolbox_Library.csproj index 8887463c..8e7c1b2e 100644 --- a/Switch_Toolbox_Library/Toolbox_Library.csproj +++ b/Switch_Toolbox_Library/Toolbox_Library.csproj @@ -258,7 +258,7 @@ - +