예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="control"></param>
        public override void Load(Control control)
        {
            base.Load(control);

            camera = new PerspectiveCamera(60, control.Width / (float)control.Height, 1, 10000);
            this.camera.Position.Z = 100;

            this.cameraRtt            = new OrthographicCamera(control.Width / -2, control.Width / 2, control.Height / 2, control.Height / -2, -10000, 10000);
            this.cameraRtt.Position.Z = 100;

            scene         = new Scene();
            this.sceneRtt = new Scene();
            sceneScreen   = new Scene();

            var light = new DirectionalLight(Color.White);

            light.Position.set(0, 0, 1).Normalize();
            this.sceneRtt.Add(light);

            light = new DirectionalLight((Color)colorConvertor.ConvertFromString("#ffaaaa"), 1.5f);
            light.Position.set(0, 0, -1).Normalize();
            this.sceneRtt.Add(light);

            rtTexture = new WebGLRenderTarget(control.Width, control.Height)
            {
                MinFilter = ThreeCs.Three.LinearFilter, MagFilter = ThreeCs.Three.NearestFilter, Format = ThreeCs.Three.RGBFormat
            };

            material = new ShaderMaterial()
            {
                Uniforms = new Uniforms {
                    { "time", new Uniform()
                      {
                          { "type", "f" }, { "value", 0.0f }
                      } }
                },
                VertexShader   = VertexShader,
                FragmentShader = FragmentShaderPass1,
            };

            materialScreen = new ShaderMaterial()
            {
                Uniforms = new Uniforms {
                    { "tDiffuse", new Uniform()
                      {
                          { "type", "t" }, { "value", rtTexture }
                      } }
                },
                VertexShader   = VertexShader,
                FragmentShader = FragmentShaderScreen,
            };

            var plane = new PlaneBufferGeometry(control.Width, control.Height);

            quad            = new Mesh(plane, material);
            quad.Position.Z = -100;
            this.sceneRtt.Add(quad);

            var geometry = new TorusGeometry(100, 25, 15, 30);

            var mat1 = new MeshPhongMaterial()
            {
                Color = (Color)colorConvertor.ConvertFromString("#555555"), Specular = (Color)colorConvertor.ConvertFromString("#ffaa00"), Shininess = 5
            };
            var mat2 = new MeshPhongMaterial()
            {
                Color = (Color)colorConvertor.ConvertFromString("#550000"), Specular = (Color)colorConvertor.ConvertFromString("#ff2200"), Shininess = 5
            };

            zmesh1 = new Mesh(geometry, mat1);
            zmesh1.Position.set(0, 0, 100);
            zmesh1.Scale.set(1.5f, 1.5f, 1.5f);
            this.sceneRtt.Add(zmesh1);

            zmesh2 = new Mesh(geometry, mat2);
            zmesh2.Position.set(0, 150, 100);
            zmesh2.Scale.set(0.75f, 0.75f, 0.75f);
            this.sceneRtt.Add(zmesh2);

            quad            = new Mesh(plane, materialScreen);
            quad.Position.Z = -100;
            sceneScreen.Add(quad);

            //
            var geometry3 = new SphereGeometry(10, 64, 32);
            var material2 = new MeshBasicMaterial()
            {
                Color = Color.White                                                  /*, Map = rtTexture*/
            };

            int n = 5;

            for (var j = 0; j < n; j++)
            {
                for (var i = 0; i < n; i++)
                {
                    var mesh = new Mesh(geometry3, material2);

                    mesh.Position.X = (i - (n - 1) / 2) * 20;
                    mesh.Position.Y = (j - (n - 1) / 2) * 20;
                    mesh.Position.Z = 0;

                    mesh.Rotation.Y = (float)-Math.PI / 2.0f;

                    scene.Add(mesh);
                }
            }

            renderer.AutoClear = false;
        }
예제 #2
0
 public EffectComposer(WebGLRenderer renderer, WebGLRenderTarget renderTarget)
 {
     // TODO: Complete member initialization
     this.renderer = renderer;
     this.renderTarget = renderTarget;
 }
예제 #3
0
 public EffectComposer(WebGLRenderer renderer, WebGLRenderTarget renderTarget)
 {
     // TODO: Complete member initialization
     this.renderer     = renderer;
     this.renderTarget = renderTarget;
 }