コード例 #1
0
ファイル: Entities.cs プロジェクト: johtela/Compose3D
        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));
            }
        }
コード例 #2
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);
            }
        }