protected override void SetUniformss()
        {
            AmbientColorUniform     = GetUniform(nameof(AmbientColorUniform));
            DiffuseColorUniform     = GetUniform(nameof(DiffuseColorUniform));
            SpecularColorUniform    = GetUniform(nameof(SpecularColorUniform));
            SpecularExponentUniform = GetUniform(nameof(SpecularExponentUniform));
            HasTextureUniform       = GetUniform(nameof(HasTextureUniform));
            ViewMatrixUniform       = GetUniform(nameof(ViewMatrixUniform));
            ProjectionMatrixUniform = GetUniform(nameof(ProjectionMatrixUniform));
            ModelMatrixUniform      = GetUniform(nameof(ModelMatrixUniform));
            PhongLightningUniform   = GetUniform(nameof(PhongLightningUniform));
            DiscardUniform          = GetUniform(nameof(DiscardUniform));
            PhongShadingUniform     = GetUniform(nameof(PhongShadingUniform));
            for (int i = 0; i < MaxLight; i++)
            {
                var light = new LightUniform
                {
                    Position          = GetUniform($"{nameof(LightsUniform)}[{i}].Position"),
                    Attenuation       = GetUniform($"{nameof(LightsUniform)}[{i}].Attenuation"),
                    Color             = GetUniform($"{nameof(LightsUniform)}[{i}].Color"),
                    Direction         = GetUniform($"{nameof(LightsUniform)}[{i}].Direction"),
                    SpecularIntensity = GetUniform($"{nameof(LightsUniform)}[{i}].SpecularIntensity"),
                    AmbientIntensity  = GetUniform($"{nameof(LightsUniform)}[{i}].AmbientIntensity"),
                    DiffuseIntensity  = GetUniform($"{nameof(LightsUniform)}[{i}].DiffuseIntensity"),
                    ConeAngle         = GetUniform($"{nameof(LightsUniform)}[{i}].ConeAngle"),
                    LightType         = GetUniform($"{nameof(LightsUniform)}[{i}].LightType"),
                };

                LightsUniform.Add(light);
            }
        }
Exemple #2
0
        public void Bind()
        {
            LightUniform currentLightUniform = Engine.UniformManager.GetUniform <LightUniform>("light");

            currentLightUniform.Color    = new Vector3(this.Color.R, this.Color.G, this.Color.B);
            currentLightUniform.Position = this.gameObject.Transform.Position;
            currentLightUniform.Set(Engine.RenderingPool.PhongShaderProgram);
        }
Exemple #3
0
        public void Bind(ShaderProgram shaderProgram, int lightNumber)
        {
            LightUniform currentLightUniform = Engine.UniformManager.GetUniform <LightUniform>("lights");

            currentLightUniform.Color    = new Vector3(this.Color.R, this.Color.G, this.Color.B);
            currentLightUniform.Position = this.gameObject.Transform.Position;
            currentLightUniform.Set(shaderProgram, lightNumber);
        }
Exemple #4
0
        public RenderHandle(Window win, GlProgram program)
        {
            Window       = win ?? throw new ArgumentNullException(nameof(win));
            Program      = program;
            _uModel      = program.GetUniform(UNIFORM_MODEL);
            _uView       = program.GetUniform(UNIFORM_VIEW);
            _uProjection = program.GetUniform(UNIFORM_PROJECTION);
            _uShade      = program.GetUniform(UNIFORM_SHADE);
            _uMaterial   = new MaterialUniform(program.GetUniform($"{UNIFORM_MATERIAL}.ambient"), program.GetUniform($"{UNIFORM_MATERIAL}.diffusion"), program.GetUniform($"{UNIFORM_MATERIAL}.color"));
            _uLightCount = program.GetUniform(UNIFORM_LIGHT_COUNT);

            for (uint i = 0; i < LIGHT_LIMIT; i++)
            {
                _uLight[i] = new LightUniform(program.GetUniform($"{UNIFORM_LIGHT}[{i}].position"), program.GetUniform($"{UNIFORM_LIGHT}[{i}].color"), program.GetUniform($"{UNIFORM_LIGHT}[{i}].intensity"));
            }

            _uModel.EnsureType(new ShaderElementType(PrimitiveTypes.Matrix, 4));
            _uView.EnsureType(new ShaderElementType(PrimitiveTypes.Matrix, 4));
            _uProjection.EnsureType(new ShaderElementType(PrimitiveTypes.Matrix, 4));
            _uShade.EnsureType(new ShaderElementType(PrimitiveTypes.Bool, 1));
        }