/// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        private Exception ExecuteCommandTextSpecialErrorHandling(OleDbHResult hr, Exception e)
        {
            if (((OleDbHResult.DB_E_ERRORSOCCURRED == hr) || (OleDbHResult.DB_E_BADBINDINFO == hr)) && (null != _dbBindings))
            {
                //
                // this code exist to try for a better user error message by post-morten detection
                // of invalid parameter types being passed to a provider that doesn't understand
                // the user specified parameter OleDbType

                Debug.Assert(null != e, "missing inner exception");

                StringBuilder builder = new StringBuilder();
                ParameterBindings.ParameterStatus(builder);
                e = ODB.CommandParameterStatus(builder.ToString(), e);
            }
            return(e);
        }
예제 #6
0
        /// <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);
        }
        /// <summary>
        ///     Creates a <see cref="MethodCallExpression" /> using the given method.
        /// </summary>
        /// <param name="bindingInfo"> Information needed to create the expression. </param>
        /// <returns> The expression tree. </returns>
        public override Expression CreateConstructorExpression(ParameterBindingInfo bindingInfo)
        {
            var arguments = ParameterBindings.Select(b => b.BindToParameter(bindingInfo));

            Expression expression
                = _factoryInstance == null
                    ? Expression.Call(
                      _factoryMethod,
                      arguments)
                    : Expression.Call(
                      Expression.Constant(_factoryInstance),
                      _factoryMethod,
                      arguments);

            if (_factoryMethod.ReturnType != RuntimeType)
            {
                expression = Expression.Convert(expression, RuntimeType);
            }

            return(expression);
        }
예제 #8
0
        /// <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);
        }
예제 #9
0
 /// <summary>
 ///     Creates a <see cref="NewExpression" /> that represents creating an entity instance using the given
 ///     constructor.
 /// </summary>
 /// <param name="bindingInfo"> Information needed to create the expression. </param>
 /// <returns> The expression tree. </returns>
 public override Expression CreateConstructorExpression(ParameterBindingInfo bindingInfo)
 => Expression.New(
     Constructor,
     ParameterBindings.Select(b => b.BindToParameter(bindingInfo)));
예제 #10
0
 public ParametersViewModel(ParameterBindings bindings)
 {
     this.Parameters = bindings.Parameters.Where(p => p is RangedDoubleParameter).Select(p => new RangedDoubleParameterVM((RangedDoubleParameter)p, bindings)).ToList();
 }
 public RangeViewModel(ParameterBindings bindings, RangedDoubleParameter parameter)
 {
     parameterBindings = bindings;
     this.parameter    = parameter;
     this.Value        = this.parameterBindings.Read(this.parameter);
 }
 public BindingsViewModel(ParameterBindings bindings)
 {
     this.bindings = bindings;
 }
예제 #13
0
파일: Boid.cs 프로젝트: r0588667/VGG
 public void setBinding(ParameterBindings b)
 {
     Bindings = b;
 }
예제 #14
0
 public RangedDoubleParameterVM(RangedDoubleParameter parameter, ParameterBindings bindings)
 {
     this.parameter = parameter;
     this.bindings  = bindings;
 }
 public RangedParamViewModel(ParameterBindings bindings, RangedDoubleParameter param)
 {
     this.param    = param;
     this.bindings = bindings;
 }