Esempio n. 1
0
        /// <summary>
        /// Creates a new effect pass.
        /// Marked as internal to prevent users from creating it.
        /// </summary>
        internal SilverlightEffectPass(string name, GraphicsDevice device, Stream vertexShaderCode, Stream pixelShaderCode, Stream vertexShaderParameters, Stream pixelShaderParameters)
        {
            this.device = device;
            Name        = name;

            // Assembly codes
            Dictionary <string, SilverlightEffectInternalParameter> tempParameters = new Dictionary <string, SilverlightEffectInternalParameter>();

            // Shaders
            if (vertexShaderCode != null)
            {
                vertexShader = VertexShader.FromStream(device, vertexShaderCode);
                ExtractConstantsRegisters(vertexShaderParameters, false, tempParameters);
            }

            if (pixelShaderCode != null)
            {
                pixelShader = PixelShader.FromStream(device, pixelShaderCode);
                ExtractConstantsRegisters(pixelShaderParameters, true, tempParameters);
            }

            parameters = new List <SilverlightEffectInternalParameter>(tempParameters.Values);

            for (int index = 0; index < SamplerStatesCount; index++)
            {
                samplerStates[index] = new SilverlightEffectSamplerState(index);
            }
        }
        /// <summary>
        /// Creates a new effect pass.
        /// Marked as internal to prevent users from creating it.
        /// </summary>
        internal SilverlightEffectPass(string name, GraphicsDevice device, Stream vertexShaderCode, Stream pixelShaderCode, Stream vertexShaderParameters, Stream pixelShaderParameters)
        {
            this.device = device;
            Name = name;
            // Shaders
            vertexShader = VertexShader.FromStream(device, vertexShaderCode);
            pixelShader = PixelShader.FromStream(device, pixelShaderCode);

            // Assembly codes
            Dictionary<string, SilverlightEffectInternalParameter> tempParameters = new Dictionary<string, SilverlightEffectInternalParameter>();
            ExtractConstantsRegisters(vertexShaderParameters, false, tempParameters);
            ExtractConstantsRegisters(pixelShaderParameters, true, tempParameters);

            parameters = new List<SilverlightEffectInternalParameter>(tempParameters.Values);

            for (int index = 0; index < SamplerStatesCount; index++)
            {
                samplerStates[index] = new SilverlightEffectSamplerState(index);
            }
        }