/// <inheritdoc/> protected override void OnInitializeBindings(IGraphicsService graphicsService, IDictionary <string, object> opaqueData) { float alpha = GetOpaqueDatum(opaqueData, "Alpha", 1.0f); Vector3 diffuse = GetOpaqueDatum(opaqueData, "DiffuseColor", new Vector3(1, 1, 1)); ParameterBindings.Add( new ConstParameterBinding <Vector4>( Effect, Effect.Parameters["DiffuseColor"], new Vector4(diffuse.X * alpha, diffuse.Y * alpha, diffuse.Z * alpha, alpha))); // Pre-multiplied alpha. ParameterBindings.Add( new ConstParameterBinding <Texture>( Effect, Effect.Parameters["Texture"], GetOpaqueDatum(opaqueData, "Texture", (Texture)null))); ParameterBindings.Add( new ConstParameterBinding <Texture>( Effect, Effect.Parameters["Texture2"], GetOpaqueDatum(opaqueData, "Texture2", (Texture)null))); VertexColorEnabled = GetOpaqueDatum(opaqueData, "VertexColorEnabled", false); base.OnInitializeBindings(graphicsService, opaqueData); }
public DelegateParameterArrayBinding <T> Set <T>(EffectParameter parameter, Action <DelegateParameterArrayBinding <T>, RenderContext, T[]> computeParameter) { DelegateParameterArrayBinding <T> binding; int index = ParameterBindings.IndexOf(parameter); if (index >= 0) { // An effect parameter binding already exists. binding = ParameterBindings[index] as DelegateParameterArrayBinding <T>; if (binding != null) { // Update existing binding. binding.ComputeParameter = computeParameter; } else { // Replace existing binding. binding = new DelegateParameterArrayBinding <T>(Effect, parameter, computeParameter); ParameterBindings[index] = binding; } } else { // Create a new binding. binding = new DelegateParameterArrayBinding <T>(Effect, parameter, computeParameter); CheckHint(binding); ParameterBindings.Add(binding); } return(binding); }
/// <summary> /// Sets a <see cref="ConstParameterArrayBinding{T}"/> for the specified effect parameter. /// </summary> /// <typeparam name="T"> /// The value type. See <see cref="EffectParameterArrayBinding{T}"/>. /// </typeparam> /// <param name="parameter"> /// The effect parameter to which the binding is applied. /// </param> /// <param name="values">The array of values.</param> /// <returns>The <see cref="ConstParameterArrayBinding{T}"/> that has been set.</returns> /// <remarks> /// If an appropriate effect parameter binding for <paramref name="parameter"/> already exists, /// then the existing binding is updated. /// </remarks> /// <exception cref="ArgumentNullException"> /// <paramref name="parameter"/> is <see langword="null"/>. /// </exception> /// <exception cref="EffectBindingException"> /// The value type <typeparamref name="T"/> is not supported. /// </exception> public ConstParameterArrayBinding <T> Set <T>(EffectParameter parameter, T[] values) { ConstParameterArrayBinding <T> binding; int index = ParameterBindings.IndexOf(parameter); if (index >= 0) { // An effect parameter binding already exists. binding = ParameterBindings[index] as ConstParameterArrayBinding <T>; if (binding != null) { // Update existing binding. binding.Values = values; } else { // Replace existing binding. binding = new ConstParameterArrayBinding <T>(Effect, parameter, values); ParameterBindings[index] = binding; } } else { // Create a new binding. binding = new ConstParameterArrayBinding <T>(Effect, parameter, values); CheckHint(binding); ParameterBindings.Add(binding); } return(binding); }
/// <inheritdoc/> protected override void OnInitializeBindings(IGraphicsService graphicsService, IDictionary <string, object> opaqueData) { float alpha = GetOpaqueDatum(opaqueData, "Alpha", 1.0f); Vector3 diffuse = GetOpaqueDatum(opaqueData, "DiffuseColor", new Vector3(1, 1, 1)); ParameterBindings.Add( new ConstParameterBinding <Vector4>( Effect, Effect.Parameters["DiffuseColor"], new Vector4(diffuse.X * alpha, diffuse.Y * alpha, diffuse.Z * alpha, alpha))); // Pre-multiplied alpha. ParameterBindings.Add( new ConstParameterBinding <Vector3>( Effect, Effect.Parameters["EmissiveColor"], GetOpaqueDatum(opaqueData, "EmissiveColor", new Vector3(0, 0, 0)))); ParameterBindings.Add( new ConstParameterBinding <Vector3>( Effect, Effect.Parameters["EnvironmentMapSpecular"], GetOpaqueDatum(opaqueData, "EnvironmentMapSpecular", new Vector3(0, 0, 0)))); ParameterBindings.Add( new ConstParameterBinding <float>( Effect, Effect.Parameters["EnvironmentMapAmount"], GetOpaqueDatum(opaqueData, "EnvironmentMapAmount", 1.0f))); ParameterBindings.Add( new ConstParameterBinding <float>( Effect, Effect.Parameters["FresnelFactor"], GetOpaqueDatum(opaqueData, "FresnelFactor", 1.0f))); var texture = GetOpaqueDatum(opaqueData, "Texture", (Texture)null); ParameterBindings.Add( new ConstParameterBinding <Texture>( Effect, Effect.Parameters["Texture"], texture)); ParameterBindings.Add( new ConstParameterBinding <TextureCube>( Effect, Effect.Parameters["EnvironmentMap"], GetOpaqueDatum(opaqueData, "EnvironmentMap", (TextureCube)null))); base.OnInitializeBindings(graphicsService, opaqueData); }
/// <inheritdoc/> protected override void OnInitializeBindings(IGraphicsService graphicsService, IDictionary <string, object> opaqueData) { // We need a special binding for DiffuseColor because when lighting is enabled, the // DiffuseColor parameter should contain diffuse + emissive! float alpha = GetOpaqueDatum(opaqueData, "Alpha", 1.0f); Vector3 diffuse = GetOpaqueDatum(opaqueData, "DiffuseColor", new Vector3(1, 1, 1)); ParameterBindings.Add( new ConstParameterBinding <Vector4>( Effect, Effect.Parameters["DiffuseColor"], new Vector4(diffuse.X * alpha, diffuse.Y * alpha, diffuse.Z * alpha, alpha))); // Pre-multiplied alpha. ParameterBindings.Add( new ConstParameterBinding <Vector3>( Effect, Effect.Parameters["EmissiveColor"], GetOpaqueDatum(opaqueData, "EmissiveColor", new Vector3(0, 0, 0)))); ParameterBindings.Add( new ConstParameterBinding <Vector3>( Effect, Effect.Parameters["SpecularColor"], GetOpaqueDatum(opaqueData, "SpecularColor", new Vector3(1, 1, 1)))); ParameterBindings.Add( new ConstParameterBinding <float>( Effect, Effect.Parameters["SpecularPower"], GetOpaqueDatum(opaqueData, "SpecularPower", 16.0f))); var texture = GetOpaqueDatum(opaqueData, "Texture", (Texture)null); ParameterBindings.Add( new ConstParameterBinding <Texture>( Effect, Effect.Parameters["Texture"], texture)); TextureEnabled = (texture != null); VertexColorEnabled = GetOpaqueDatum(opaqueData, "VertexColorEnabled", false); base.OnInitializeBindings(graphicsService, opaqueData); }
/// <inheritdoc/> protected override void OnInitializeBindings(IGraphicsService graphicsService, IDictionary <string, object> opaqueData) { float alpha = GetOpaqueDatum(opaqueData, "Alpha", 1.0f); Vector3 diffuse = GetOpaqueDatum(opaqueData, "DiffuseColor", new Vector3(1, 1, 1)); ParameterBindings.Add( new ConstParameterBinding <Vector4>( Effect, Effect.Parameters["DiffuseColor"], new Vector4(diffuse.X * alpha, diffuse.Y * alpha, diffuse.Z * alpha, alpha))); // Pre-multiplied alpha. ParameterBindings.Add( new ConstParameterBinding <Vector3>( Effect, Effect.Parameters["EmissiveColor"], GetOpaqueDatum(opaqueData, "EmissiveColor", new Vector3(0, 0, 0)))); ParameterBindings.Add( new ConstParameterBinding <Vector3>( Effect, Effect.Parameters["SpecularColor"], GetOpaqueDatum(opaqueData, "SpecularColor", new Vector3(1, 1, 1)))); ParameterBindings.Add( new ConstParameterBinding <float>( Effect, Effect.Parameters["SpecularPower"], GetOpaqueDatum(opaqueData, "SpecularPower", 16.0f))); ParameterBindings.Add( new ConstParameterBinding <Texture>( Effect, Effect.Parameters["Texture"], GetOpaqueDatum(opaqueData, "Texture", (Texture)null))); WeightsPerVertex = GetOpaqueDatum(opaqueData, "WeightsPerVertex", 4); base.OnInitializeBindings(graphicsService, opaqueData); }