Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
 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();
     }
 }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
 private Panels()
 {
     texture = new TextureUniforms(_panelShader, new Sampler2D(0).NearestColor()
                                   .ClampToEdges(Axes.X | Axes.Y));
     transform = new TransformUniforms(_panelShader);
 }
Ejemplo n.º 5
0
 private MaterialPanels(GLProgram program)
     : base(program)
 {
     Texture   = new TextureUniforms(_panelShader, new Sampler2D(0).NearestColor());
     Transform = new TransformUniforms(_panelShader);
 }
Ejemplo n.º 6
0
 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);
     }
 }