Ejemplo n.º 1
0
        ISrvBindable CreateNewTexture(Vector2I resolution)
        {
            string debugName    = string.Format("Debug-mipmap-{0}x{1}", resolution.X, resolution.Y);
            int    mipmapLevels = MyResourceUtils.GetMipmapsCount(Math.Max(resolution.X, resolution.Y));

            resolution.X = MyResourceUtils.GetMipmapStride(resolution.X, 0); // this is required by texture compression
            resolution.Y = MyResourceUtils.GetMipmapStride(resolution.Y, 0); // this is required by texture compression
            ISrvTexture dstTex = MyManagers.RwTextures.CreateSrv(debugName, resolution.X, resolution.Y, Format.BC7_UNorm_SRgb, mipmapLevels: mipmapLevels);

            for (int i = 0; i < mipmapLevels; i++)
            {
                ISrvBindable srcTex           = m_fileTextures[i % m_fileTextures.Length];
                Vector2I     mipmapResolution = new Vector2I(MyResourceUtils.GetMipmapSize(resolution.X, i),
                                                             MyResourceUtils.GetMipmapSize(resolution.Y, i));
                for (int x = 0; x < mipmapResolution.X; x += srcTex.Size.X)
                {
                    for (int y = 0; y < mipmapResolution.Y; y += srcTex.Size.Y)
                    {
                        MyRender11.RC.CopySubresourceRegion(srcTex, 0, null, dstTex, i, x, y);
                    }
                }
            }

            return(dstTex);
        }
Ejemplo n.º 2
0
            // if no file texture can be loaded, the function will return false and default value in parameters
            bool GetCorrectedFileTextureParams(out MyFileTextureParams parameters)
            {
                //parameters = new MyFileTextureParams();
                foreach (string filepath in m_listSubresourceFilenames)
                {
                    if (MyFileTextureParamsManager.LoadFromFile(filepath, out parameters))
                    {
                        if (MyCompilationSymbols.ReinterpretFormatsStoredInFiles)
                        {
                            if (m_type != MyFileTextureEnum.NORMALMAP_GLOSS)
                            {
                                parameters.Format = MyResourceUtils.MakeSrgb(parameters.Format);
                            }
                        }

                        int skipMipmaps = 0;
                        if (m_type != MyFileTextureEnum.GUI && m_type != MyFileTextureEnum.GPUPARTICLES)
                        {
                            skipMipmaps = MyRender11.RenderSettings.TextureQuality.MipmapsToSkip(parameters.Resolution.X, parameters.Resolution.Y);
                        }

                        if (parameters.Mipmaps > 1)
                        {
                            parameters.Mipmaps     -= skipMipmaps;
                            parameters.Resolution.X = MyResourceUtils.GetMipmapSize(parameters.Resolution.X, skipMipmaps);
                            parameters.Resolution.Y = MyResourceUtils.GetMipmapSize(parameters.Resolution.Y, skipMipmaps);
                        }
                        return(true);
                    }
                }
                parameters.Format     = m_recoverySystem.FormatBytePattern;
                parameters.Mipmaps    = 3;
                parameters.Resolution = new Vector2I(4, 4);
                parameters.ArraySize  = 1;
                return(false);
            }