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]); } }
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 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); }
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; }
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); }
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); }
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); }
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(); } } }
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 SkyShader(ShaderProperties properties) : base(properties, (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\sky.vert"), (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\sky.frag")) { DefaultValues(); }
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)); }
public TerrainShader(ShaderProperties properties) : base(properties, (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\terrain.vert"), (string)AssetManager.Load(AppDomain.CurrentDomain.BaseDirectory + "\\shaders\\terrain.frag")) { }