Example #1
0
        private void loadTextureFromDds(Texture target)
        {
            GL.Enable(EnableCap.Texture2D);

            uint          ImageTextureHandle;
            TextureTarget ImageTextureTarget;

            DDSLoader.LoadFromDisk(target.pointer, out ImageTextureHandle, out ImageTextureTarget);

            // load succeeded, Texture can be used.
            GL.BindTexture(ImageTextureTarget, ImageTextureHandle);
            GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
            int[] MipMapCount = new int[1];
            GL.GetTexParameter(ImageTextureTarget, GetTextureParameter.TextureMaxLevel, out MipMapCount[0]);
            if (MipMapCount[0] == 0) // if no MipMaps are present, use linear Filter
            {
                GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            }
            else // MipMaps are present, use trilinear Filter
            {
                GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.LinearMipmapLinear);
            }

            target.texture = (int)ImageTextureHandle;
            target.loaded  = true;

            textures[target.identifier] = target;
        }
Example #2
0
        private void BuildRenderItems()
        {
            RGrid = new RenderItem()
            {
                // Reset World
                Worlds = new Matrix[1],

                Light = new LightBuffer()
                {
                    AmbientColor   = new Vector4(0.15f, 0.15f, 0.15f, 1.0f),
                    Diffuse        = new Vector4(1.0f, 1.0f, 1.0f, 1.0f),
                    LightDirection = new Vector3(0, -1, 0),
                    SpecularColor  = new Vector4(1, 1, 1, 1),
                    SpecularPower  = 50,
                },

                VertexBuffer = new Buffer(Grid.Vertices.SizeInBytes, Grid.Vertices.Size, Device, ResourceInfo.VertexBuffer),

                IndexBuffer = new Buffer(Grid.Indices.SizeInBytes, Grid.Indices.Size, Device, ResourceInfo.IndexBuffer),

                ConstantBuffer = new Buffer[]
                {
                    new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer),
                    new Buffer(Utilities.SizeOf <LightBuffer>(), Utilities.SizeOf <LightBuffer>(), Device, ResourceInfo.ConstantBuffer),
                    new Buffer(Utilities.SizeOf <CameraBuffer>(), Utilities.SizeOf <CameraBuffer>(), Device, ResourceInfo.ConstantBuffer)
                },

                Texture = DDSLoader.LoadTextureFromFile(Device.NativeDevice, Device.NativeDeviceContext, "Text/Test.dds"),
            };



            RMesh = new RenderItem()
            {
                // Reset World
                Worlds = new Matrix[20],

                Light = new LightBuffer()
                {
                    AmbientColor   = new Vector4(0.15f, 0.15f, 0.15f, 1.0f),
                    Diffuse        = new Vector4(0.6f, 0.6f, 0.6f, 1.0f),
                    LightDirection = new Vector3(0, 0, 1.05f),
                    SpecularColor  = new Vector4(1, 1, 1, 1),
                    SpecularPower  = 20,
                },

                VertexBuffer = new Buffer(Mesh.Vertices.SizeInBytes, Mesh.Vertices.Size, Device, ResourceInfo.VertexBuffer),

                IndexBuffer = new Buffer(Mesh.Indices.SizeInBytes, Mesh.Indices.Size, Device, ResourceInfo.IndexBuffer),

                ConstantBuffer = new Buffer[]
                {
                    new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer),
                    new Buffer(Utilities.SizeOf <LightBuffer>(), Utilities.SizeOf <LightBuffer>(), Device, ResourceInfo.ConstantBuffer),
                    new Buffer(Utilities.SizeOf <CameraBuffer>(), Utilities.SizeOf <CameraBuffer>(), Device, ResourceInfo.ConstantBuffer)
                },

                Texture = Texture.LoadFromFile(Device, "Text/CesiumMan.jpg")
            };
        }
Example #3
0
    private Texture2D LoadMapOverview(RadarLevel radarLevel = RadarLevel.main)
    {
        Texture2D loadedOverview = null;

        if (!string.IsNullOrEmpty(mapName))
        {
            string overviewPath = GetOverviewTexturePath(mapName, radarLevel);
            if (File.Exists(overviewPath))
            {
                loadedOverview = DDSLoader.LoadDDSFile(File.ReadAllBytes(overviewPath));
            }
        }
        return(loadedOverview);
    }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="control"></param>
        public override void Load(Control control)
        {
            base.Load(control);

            this.camera            = new PerspectiveCamera(50, control.Width / (float)control.Height, 1, 2000);
            this.camera.Position.Z = 1000;

            this.scene = new Scene();

            this.geometry = new BoxGeometry(200, 200, 200);

            /*
             * This is how compressed textures are supposed to be used:
             *
             * DXT1 - RGB - opaque textures
             * DXT3 - RGBA - transparent textures with sharp alpha transitions
             * DXT5 - RGBA - transparent textures with full alpha range
             */

            var loader = new DDSLoader();

            loader.Loaded += (o, args) =>
            {
            };

            var map1 = loader.Load("examples/textures/compressed/disturb_dxt1_nomip.dds");

            map1.MinFilter  = map1.MagFilter = Three.LinearFilter;
            map1.Anisotropy = 4;

            var map2 = loader.Load("examples/textures/compressed/disturb_dxt1_mip.dds");

            map2.Anisotropy = 4;

            var map3 = loader.Load("examples/textures/compressed/hepatica_dxt3_mip.dds");

            map3.Anisotropy = 4;

            var map4 = loader.Load("examples/textures/compressed/explosion_dxt5_mip.dds");

            map4.Anisotropy = 4;

            var map5 = loader.Load("examples/textures/compressed/disturb_argb_nomip.dds");

            map5.MinFilter  = map5.MagFilter = Three.LinearFilter;
            map5.Anisotropy = 4;

            var map6 = loader.Load("examples/textures/compressed/disturb_argb_mip.dds");

            map6.Anisotropy = 4;

            var cubemap1 = loader.Load("examples/textures/compressed/Mountains.dds", texture => {
                texture.MagFilter = Three.LinearFilter;
                texture.MinFilter = Three.LinearFilter;
                texture.Mapping   = new Three.CubeReflectionMapping();
                //    material1.needsUpdate = true;
            });

            var cubemap2 = loader.Load("examples/textures/compressed/Mountains_argb_mip.dds", texture => {
                texture.MagFilter = Three.LinearFilter;
                texture.MinFilter = Three.LinearFilter;
                texture.Mapping   = new Three.CubeReflectionMapping();
                //    material5.needsUpdate = true;
            });

            var cubemap3 = loader.Load("examples/textures/compressed/Mountains_argb_nomip.dds", texture => {
                texture.MagFilter = Three.LinearFilter;
                texture.MinFilter = Three.LinearFilter;
                texture.Mapping   = new Three.CubeReflectionMapping();
                //    material6.needsUpdate = true;
            });

            var material1 = new MeshBasicMaterial()
            {
                Map = map1, EnvMap = cubemap1
            };
            var material2 = new MeshBasicMaterial()
            {
                Map = map2
            };
            var material3 = new MeshBasicMaterial()
            {
                Map = map3, AlphaTest = 0.5f, Side = Three.DoubleSide
            };
            var material4 = new MeshBasicMaterial()
            {
                Map = map4, Side = Three.DoubleSide, Blending = Three.AdditiveBlending, DepthTest = false, Transparent = true
            };
            var material5 = new MeshBasicMaterial()
            {
                EnvMap = cubemap2
            };
            var material6 = new MeshBasicMaterial()
            {
                EnvMap = cubemap3
            };
            var material7 = new MeshBasicMaterial()
            {
                Map = map5
            };
            var material8 = new MeshBasicMaterial()
            {
                Map = map6
            };

            // After loading setting

            material1.NeedsUpdate = true;
            material5.NeedsUpdate = true;
            material6.NeedsUpdate = true;



            // Testing purposes

            var texture1 = ImageUtils.LoadTexture(@"examples/textures/crate.gif");

            texture1.Anisotropy = this.renderer.MaxAnisotropy;

            var material = new MeshBasicMaterial {
                Map = texture1
            };


            // TODO NOTE EnvMap is not working properly


            // . . . .
            // X . . .

            var mesh = new Mesh(new TorusGeometry(100, 50, 32, 16), material1); // material1

            mesh.Position.X = -600;
            mesh.Position.Y = -200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);

            // . . . .
            // . X . .

            mesh            = new Mesh(this.geometry, material2); // material2
            mesh.Position.X = -200;
            mesh.Position.Y = -200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);

            // . X . .
            // . . . .

            mesh            = new Mesh(this.geometry, material3); // material3
            mesh.Position.X = -200;
            mesh.Position.Y = 200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);

            // X . . .
            // . . . .

            mesh            = new Mesh(this.geometry, material4); // material4
            mesh.Position.X = -600;
            mesh.Position.Y = 200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);

            // . . X .
            // . . . .

            mesh            = new Mesh(new BoxGeometry(200, 200, 200), material5); // material5
            mesh.Position.X = 200;
            mesh.Position.Y = 200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);

            // . . . .
            // . . X .

            mesh            = new Mesh(new BoxGeometry(200, 200, 200), material6); // material6
            mesh.Position.X = 200;
            mesh.Position.Y = -200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);

            // . . . .
            // . . . X

            mesh            = new Mesh(this.geometry, material7); // material7
            mesh.Position.X = 600;
            mesh.Position.Y = -200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);

            // . . . X
            // . . . .

            mesh            = new Mesh(this.geometry, material8); // material8
            mesh.Position.X = 600;
            mesh.Position.Y = 200;
            this.scene.Add(mesh);
            this.meshes.Add(mesh);
        }