public Entities(GLProgram program, SceneGraph scene) : base(program) { var numPointLights = 0; var plights = new LightingShaders.PointLight[4]; using (program.Scope()) { foreach (var pointLight in scene.Root.Traverse().OfType <PointLight> ()) { plights[numPointLights++] = new LightingShaders.PointLight { position = pointLight.Position, intensity = pointLight.Intensity, linearAttenuation = pointLight.LinearAttenuation, quadraticAttenuation = pointLight.QuadraticAttenuation }; } pointLights &= plights; var samp = new Sampler2D[4]; for (int i = 0; i < samp.Length; i++) { samp[i] = new Sampler2D(i + 1).LinearFiltering().ClampToEdges(Axes.All); } samplers &= samp; diffuseMap &= new SamplerCube(5).LinearFiltering().ClampToEdges(Axes.All); lighting = new LightingUniforms(program, scene); transforms = new TransformUniforms(program); shadows = new CascadedShadowUniforms(program, new Sampler2DArray(0).LinearFiltering().ClampToEdges(Axes.All)); } }
public Materials(GLProgram program) : base(program) { using (program.Scope()) { transforms = new TransformUniforms(program); diffuseMap &= new Sampler2D(0).LinearFiltering(); normalMap &= new Sampler2D(1).LinearFiltering(); heightMap &= new Sampler2D(2).LinearFiltering(); } }
private Terrain(GLProgram program, SceneGraph scene, Vec3 skyCol) : base(program) { transforms = new TransformUniforms(program); lighting = new LightingUniforms(program, scene); shadows = new CascadedShadowUniforms(program, new Sampler2DArray(0).LinearFiltering().ClampToEdges(Axes.All)); using (program.Scope()) { skyColor &= skyCol; sandSampler &= new Sampler2D(1); rockSampler &= new Sampler2D(2); grassSampler &= new Sampler2D(3); } }
public LightingUniforms(GLProgram program, SceneGraph scene) : base(program) { using (program.Scope()) { var gl = scene.GlobalLighting; if (gl != null) { globalLighting &= new LightingShaders.GlobalLight() { ambientLightIntensity = gl.AmbientLightIntensity, maxintensity = gl.MaxIntensity, inverseGamma = 1f / gl.GammaCorrection }; } } }
public CascadedShadowUniforms(GLProgram program, Sampler2DArray sampler) : base(program) { using (program.Scope()) csmShadowMap &= sampler; }
public ShadowUniforms(GLProgram program, Sampler2D sampler) : base(program) { using (program.Scope()) shadowMap &= sampler; }
private Skybox(GLProgram program) : base(program) { using (program.Scope()) cubeMap &= new SamplerCube(0).LinearFiltering().ClampToEdges(Axes.All); }
public TextureUniforms(GLProgram program, Sampler2D sampler) : base(program) { using (program.Scope()) textureMap &= sampler; }
public CascadedShadowUniforms(GLProgram program, Sampler2DArray sampler) : base(program) { using (program.Scope ()) csmShadowMap &= sampler; }
public ShadowUniforms(GLProgram program, Sampler2D sampler) : base(program) { using (program.Scope ()) shadowMap &= sampler; }
public Materials(GLProgram program) : base(program) { using (program.Scope ()) { transforms = new TransformUniforms (program); diffuseMap &= new Sampler2D (0).LinearFiltering ().ClampToEdges (Axes.All); normalMap &= new Sampler2D (1).LinearFiltering ().ClampToEdges (Axes.All); } }
public LightingUniforms(GLProgram program, SceneGraph scene) : base(program) { using (program.Scope ()) { var gl = scene.GlobalLighting; if (gl != null) { globalLighting &= new LightingShaders.GlobalLight () { ambientLightIntensity = gl.AmbientLightIntensity, maxintensity = gl.MaxIntensity, inverseGamma = 1f / gl.GammaCorrection }; } } }
private Skybox(GLProgram program) : base(program) { using (program.Scope ()) cubeMap &= new SamplerCube (0).LinearFiltering ().ClampToEdges (Axes.All); }