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); } }
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); }
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); }
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)); }