Example #1
0
        public void RenderBucketNormals(Environment env, Camera cam, Bucket bucket)
        {
            for (int i = 0; i < geometries.Count; i++)
            {
                if (geometries[i].AttachedToRoot && geometries[i].Material.Bucket == bucket)
                {
                    if (geometries[i].NormalsShader == null)
                    {
                        if (geometries[i].GetShader() == null)
                        {
                            geometries[i].SetDefaultShader();
                        }
                        ShaderProperties p = new ShaderProperties(geometries[i].ShaderProperties);
                        p.SetProperty("NORMALS", true);
                        geometries[i].NormalsShader = ShaderManager.GetShader(geometries[i].GetShader().GetType(), p);
                    }

                    geometries[i].NormalsShader.Use();
                    geometries[i].NormalsShader.ApplyMaterial(geometries[i].Material);
                    geometries[i].NormalsShader.SetTransforms(geometries[i].GetWorldMatrix(), cam.ViewMatrix, cam.ProjectionMatrix);
                    geometries[i].NormalsShader.Update(env, cam, geometries[i].Mesh);
                    geometries[i].NormalsShader.Render(geometries[i].Mesh);
                    geometries[i].NormalsShader.End();

                    Shader.Clear();
                }
            }
        }
 public ShaderProperties(ShaderProperties other)
 {
     foreach (string str in other.values.Keys)
     {
         values.Add(str, other.values[str]);
     }
 }
Example #3
0
        public void RenderBucketDepth(Environment env, Camera cam, Bucket bucket, DepthRenderMode renderMode)
        {
            for (int i = 0; i < geometries.Count; i++)
            {
                if (geometries[i].AttachedToRoot && geometries[i].Material.Bucket == bucket)
                {
                    if (geometries[i].DepthShader == null)
                    {
                        if (geometries[i].GetShader() == null)
                        {
                            geometries[i].SetDefaultShader();
                        }
                        ShaderProperties p = new ShaderProperties(geometries[i].ShaderProperties);
                        p.SetProperty("DEPTH", true);
                        geometries[i].DepthShader = ShaderManager.GetShader(typeof(Shaders.DepthShader), p);
                    }
                    if (renderMode == DepthRenderMode.Shadow && geometries[i].Material.GetBool(Material.MATERIAL_CASTSHADOWS))
                    {
                        geometries[i].DepthShader.Use();
                        geometries[i].DepthShader.ApplyMaterial(geometries[i].Material);
                        geometries[i].DepthShader.SetTransforms(geometries[i].GetWorldMatrix(), cam.ViewMatrix, cam.ProjectionMatrix);
                        geometries[i].DepthShader.Update(env, cam, geometries[i].Mesh);
                        geometries[i].DepthShader.Render(geometries[i].Mesh);
                        geometries[i].DepthShader.End();
                    }

                    Shader.Clear();
                    Texture2D.Clear();
                }
            }
        }
 public ShaderProperties(ShaderProperties other)
 {
     foreach (string str in other.values.Keys)
     {
         values.Add(str, other.values[str]);
     }
 }
Example #5
0
 public Shader(ShaderProperties properties, string vs_code, string fs_code)
 {
     this.properties = properties;
     Create();
     AddVertexProgram(Util.ShaderUtil.FormatShaderIncludes(Assets.AssetManager.GetAppPath(), Util.ShaderUtil.FormatShaderVersion(Util.ShaderUtil.FormatShaderProperties(vs_code, properties))));
     AddFragmentProgram(Util.ShaderUtil.FormatShaderIncludes(Assets.AssetManager.GetAppPath(), Util.ShaderUtil.FormatShaderVersion(Util.ShaderUtil.FormatShaderProperties(fs_code, properties))));
     CompileShader();
 }
Example #6
0
 public Shader(ShaderProperties properties, string vs_code, string fs_code)
 {
     this.properties = properties;
     Create();
     AddVertexProgram(Util.ShaderUtil.FormatShaderIncludes(Assets.AssetManager.GetAppPath(), Util.ShaderUtil.FormatShaderVersion(Util.ShaderUtil.FormatShaderProperties(vs_code, properties))));
     AddFragmentProgram(Util.ShaderUtil.FormatShaderIncludes(Assets.AssetManager.GetAppPath(), Util.ShaderUtil.FormatShaderVersion(Util.ShaderUtil.FormatShaderProperties(fs_code, properties))));
     CompileShader();
 }
 public ShaderProperties Combine(ShaderProperties other)
 {
     string[] keys_other = other.values.Keys.ToArray();
     object[] vals_other = other.values.Values.ToArray();
     for (int i = 0; i < keys_other.Length; i++)
     {
         if (!values.ContainsKey(keys_other[i]))
         {
             values.Add(keys_other[i], vals_other[i]);
         }
     }
     return this;
 }
 public ShaderProperties Combine(ShaderProperties other)
 {
     string[] keys_other = other.values.Keys.ToArray();
     object[] vals_other = other.values.Values.ToArray();
     for (int i = 0; i < keys_other.Length; i++)
     {
         if (!values.ContainsKey(keys_other[i]))
         {
             values.Add(keys_other[i], vals_other[i]);
         }
     }
     return(this);
 }
Example #9
0
        public static Shader GetShader(Type shaderType, ShaderProperties properties)
        {
            for (int i = 0; i < shaders.Count; i++)
            {
                if (shaders[i].GetType() == shaderType)
                {
                    if (Util.ShaderUtil.CompareShader(shaders[i].GetProperties(), properties))
                        return shaders[i];
                }
            }

            Shader shader = (Shader)Activator.CreateInstance(shaderType, properties);
            shaders.Add(shader);
            return shader;
        }
Example #10
0
        public static Shader GetShader(Type shaderType, ShaderProperties properties)
        {
            for (int i = 0; i < shaders.Count; i++)
            {
                if (shaders[i].GetType() == shaderType)
                {
                    if (Util.ShaderUtil.CompareShader(shaders[i].GetProperties(), properties))
                    {
                        return(shaders[i]);
                    }
                }
            }

            Shader shader = (Shader)Activator.CreateInstance(shaderType, properties);

            shaders.Add(shader);
            return(shader);
        }
Example #11
0
        public static Shader GetShader(Type shaderType, ShaderProperties properties)
        {
            for (int i = 0; i < shaders.Count; i++)
            {
                if (shaders[i].GetType() == shaderType)
                {
                    if (Util.ShaderUtil.CompareShader(shaderProperties[i], properties))
                    {
                        return(shaders[i]);
                    }
                }
            }

            Shader shader = (Shader)Activator.CreateInstance(shaderType, properties);

            shaders.Add(shader);
            shaderProperties.Add(new ShaderProperties(properties));

            Console.WriteLine("Add shader #" + shaders.Count + ": " + shaderType.ToString() + "\n" + properties.ToString());
            return(shader);
        }
Example #12
0
 public void SetShader(Type shaderType, ShaderProperties properties)
 {
     properties.SetProperty("DEFAULT", true);
     SetShader(ShaderManager.GetShader(shaderType, properties));
     properties.SetProperty("DEFAULT", false);
 }
 public bool Equals(ShaderProperties s1)
 {
     return Util.ShaderUtil.CompareShader(this, s1);
 }
Example #14
0
        public void RenderBucketNormals(Environment env, Camera cam, Bucket bucket)
        {
            for (int i = 0; i < geometries.Count; i++)
            {
                if (geometries[i].AttachedToRoot && geometries[i].Material.Bucket == bucket)
                {
                    if (geometries[i].NormalsShader == null)
                    {
                        if (geometries[i].GetShader() == null)
                            geometries[i].SetDefaultShader();
                        ShaderProperties p = new ShaderProperties(geometries[i].ShaderProperties);
                        p.SetProperty("NORMALS", true);
                        geometries[i].NormalsShader = ShaderManager.GetShader(typeof(Shaders.NormalsShader), p);

                    }

                    geometries[i].NormalsShader.Use();
                    geometries[i].NormalsShader.ApplyMaterial(geometries[i].Material);
                    geometries[i].NormalsShader.SetTransforms(geometries[i].GetWorldMatrix(), cam.ViewMatrix, cam.ProjectionMatrix);
                    geometries[i].NormalsShader.Update(env, cam, geometries[i].Mesh);
                    geometries[i].NormalsShader.Render(geometries[i].Mesh);
                    geometries[i].NormalsShader.End();

                    Shader.Clear();
                }
            }
        }
Example #15
0
        public void RenderBucketDepth(Environment env, Camera cam, Bucket bucket, DepthRenderMode renderMode)
        {
            for (int i = 0; i < geometries.Count; i++)
            {
                if (geometries[i].AttachedToRoot && geometries[i].Material.Bucket == bucket)
                {
                    if (geometries[i].DepthShader == null)
                    {
                        if (geometries[i].GetShader() == null)
                            geometries[i].SetDefaultShader();
                        ShaderProperties p = new ShaderProperties(geometries[i].ShaderProperties);
                        p.SetProperty("DEPTH", true);
                        geometries[i].DepthShader = ShaderManager.GetShader(typeof(Shaders.DepthShader), p);
                    }
                    if (renderMode == DepthRenderMode.Shadow && geometries[i].Material.GetBool(Material.MATERIAL_CASTSHADOWS))
                    {
                        geometries[i].DepthShader.Use();
                        geometries[i].DepthShader.ApplyMaterial(geometries[i].Material);
                        geometries[i].DepthShader.SetTransforms(geometries[i].GetWorldMatrix(), cam.ViewMatrix, cam.ProjectionMatrix);
                        geometries[i].DepthShader.Update(env, cam, geometries[i].Mesh);
                        geometries[i].DepthShader.Render(geometries[i].Mesh);
                        geometries[i].DepthShader.End();
                    }

                    Shader.Clear();
                    Texture2D.Clear();
                }
            }
        }
Example #16
0
 public SkyShader(ShaderProperties properties)
     : base(properties, (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\sky.vert"),
                        (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\sky.frag"))
 {
     DefaultValues();
 }
Example #17
0
 public void SetShader(Type shaderType, ShaderProperties properties)
 {
     ShaderProperties p = new ShaderProperties(properties);
     p.SetProperty("DEFAULT", true);
     SetShader(ShaderManager.GetShader(shaderType, p));
 }
 public NormalMapShader(ShaderProperties properties)
     : base(properties, (string)AssetManager.Load(AssetManager.GetAppPath() + "\\shaders\\normal_map_generator\\nm.vert"),
                        (string)AssetManager.Load(AssetManager.GetAppPath() + "\\shaders\\normal_map_generator\\nm.frag"))
 {
 }
 public bool Equals(ShaderProperties s1)
 {
     return(Util.ShaderUtil.CompareShader(this, s1));
 }
Example #20
0
 public TerrainShader(ShaderProperties properties)
     : base(properties, (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\terrain.vert"),
                        (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\terrain.frag"))
 {
 }