Example #1
0
        public SSunFlareUpdater(
            SSScene sunDiskScene,
            SSObjectOcclusionQueuery sunDiskObj,
            RectangleF[] spriteRects = null,
            float[] spriteScales     = null
            )
        {
            this._sunDiskOccScene = sunDiskScene;
            this._sunDiskOccObj   = sunDiskObj;

            _rects  = spriteRects ?? defaultRects;
            _scales = spriteScales ?? defaultSpriteScales;
        }
Example #2
0
        public SSunFlareUpdater(
            SSScene sunDiskScene,
            SSObjectOcclusionQueuery sunDiskObj,
            RectangleF[] spriteRects = null,
            float[] spriteScales = null
        )
        {
            this._sunDiskOccScene = sunDiskScene;
            this._sunDiskOccObj = sunDiskObj;

            _rects = spriteRects ?? defaultRects;
            _scales = spriteScales ?? defaultSpriteScales;
        }
Example #3
0
        public SSSunFlareRenderer(SSScene camera3dScene, SSObjectOcclusionQueuery sunDiskObj,
                                  SSTexture texture = null)
            : base(camera3dScene,
                   new SInstancedSpriteData(Math.Max(SSunFlareUpdater.defaultRects.Length,
                                                     SSunFlareUpdater.defaultSpriteScales.Length)),
                   texture ?? defaultTexture())
        {
            this.renderState.alphaBlendingOn = true;
            this.renderState.blendFactorSrc  = BlendingFactorSrc.SrcAlpha;
            this.renderState.blendFactorDest = BlendingFactorDest.OneMinusSrcAlpha;

            addUpdater(new SSunFlareUpdater(camera3dScene, sunDiskObj));
        }
Example #4
0
        public SSSunFlareRenderer(SSScene camera3dScene, SSObjectOcclusionQueuery sunDiskObj,
            SSTexture texture = null)
            : base(camera3dScene, 
                new SInstancedSpriteData(Math.Max(SSunFlareUpdater.defaultRects.Length, 
                                                  SSunFlareUpdater.defaultSpriteScales.Length)),
                texture ?? defaultTexture())
        {
            this.renderState.alphaBlendingOn = true;
            this.renderState.blendFactorSrc = BlendingFactorSrc.SrcAlpha;
            this.renderState.blendFactorDest = BlendingFactorDest.OneMinusSrcAlpha;

            addUpdater(new SSunFlareUpdater (camera3dScene, sunDiskObj));
        }
        public SLaserEmissionFlareUpdater(
            SLaser laser, int beamId,
            /*SSObjectOcclusionQueuery occFlat,*/ SSObjectOcclusionQueuery occDisk,
            RectangleF backgroundRect,
            RectangleF overlayRect
            )
        {
            this._laser  = laser;
            this._beamId = beamId;
            //this._beamOccFlatObj = occFlat;
            this._occDiskObj = occDisk;

            this._backgroundRect = backgroundRect;
            this._overlayRect    = overlayRect;
        }
        public SLaserEmissionFlareUpdater(
            SLaser laser, int beamId, 
            /*SSObjectOcclusionQueuery occFlat,*/ SSObjectOcclusionQueuery occDisk, 
            RectangleF backgroundRect,
            RectangleF overlayRect
        )
        {
            this._laser = laser;
            this._beamId = beamId;
            //this._beamOccFlatObj = occFlat;
            this._occDiskObj = occDisk;

            this._backgroundRect = backgroundRect;
            this._overlayRect = overlayRect;
        }
Example #7
0
            protected void _createRenderObjects()
            {
                var laserParams = this._laser.parameters;

                if (laserParams.doEmissionFlare && _occDiskFlatObj == null)
                {
                    _occDiskFlatObj = new SSObjectOcclusionQueuery(new SSMeshDisk());
                    _occDiskFlatObj.renderState.alphaBlendingOn          = true;
                    _occDiskFlatObj.renderState.lighted                  = false;
                    _occDiskFlatObj.renderState.depthTest                = true;
                    _occDiskFlatObj.renderState.depthWrite               = false;
                    _occDiskFlatObj.renderState.doBillboarding           = false;
                    _occDiskFlatObj.renderState.matchScaleToScreenPixels = true;
                    _occDiskFlatObj.Scale = new Vector3(_laser.parameters.emissionOccDiskRadiusPx);
                    var color = _laser.parameters.backgroundColor; // debugging
                    color.A = _laser.parameters.emissionOccDisksAlpha;
                    _occDiskFlatObj.MainColor = color;
                    _occDiskFlatObj.Name      = "occlusion disk object for laser beam's emission flare";
                    _occDiskScene.AddObject(_occDiskFlatObj);
                }

                if (_beamObj == null)
                {
                    _beamObj = new SLaserBeamMiddleObject(
                        _laser, _beamId, _beamScene,
                        laserParams.middleBackgroundTexture(), laserParams.middleOverlayTexture(),
                        laserParams.middleInterferenceTexture());
                    _beamObj.Name = "laser beam middle section object";
                    _beamScene.AddObject(_beamObj);
                }

                if (laserParams.doEmissionFlare && _emissionFlareUpdater == null)
                {
                    _emissionFlareUpdater = new SLaserEmissionFlareUpdater(
                        _laser, _beamId, _occDiskFlatObj,
                        laserParams.emissionBackgroundRect, laserParams.emissionOverlayRect);
                    _sprite2dRenderer.addUpdater(_emissionFlareUpdater);
                }

                if (laserParams.doScreenHitFlare && _hitFlareUpdater == null)
                {
                    float[] masterScales = { laserParams.hitFlareCoronaOverlayScale, laserParams.hitFlareCoronaOverlayScale,
                                             laserParams.hitFlareRing1Scale,         laserParams.hitFlareRing2Scale };
                    _hitFlareUpdater = new SLaserScreenHitFlareUpdater(_laser, _beamId, _beamScene, null, masterScales);
                    _sprite2dRenderer.addUpdater(_hitFlareUpdater);
                }
            }
        protected virtual void setupEnvironment()
        {
            // add skybox cube
            var mesh = SSAssetManager.GetInstance <SSMesh_wfOBJ>("skybox/skybox.obj");

            skyboxCube = new SSObjectMesh(mesh);
            skyboxCube.renderState.depthTest  = true;
            skyboxCube.renderState.depthWrite = true;
            skyboxCube.renderState.lighted    = false;
            skyboxCube.selectable             = false;
            environmentScene.AddObject(skyboxCube);

            // add stars
            skyboxStars            = new SStarfieldObject(1600);
            skyboxStars.selectable = false;
            environmentScene.AddObject(skyboxStars);

            #if true
            // setup a sun billboard object and a sun flare spriter renderer
            {
                var sunDiskMesh = new SSMeshDisk();
                sunDisk = new SSObjectOcclusionQueuery(sunDiskMesh);
                sunDisk.renderState.doBillboarding = true;
                sunDisk.MainColor = new Color4(1f, 1f, 0.8f, 1f);
                sunDisk.Scale     = new Vector3(25f);
                sunDisk.renderState.matchScaleToScreenPixels = true;
                sunDisk.renderState.depthFunc      = DepthFunction.Lequal;
                sunDisk.renderState.frustumCulling = false;
                sunDisk.renderState.lighted        = false;
                sunDisk.renderState.castsShadow    = false;
                sunDiskScene.AddObject(sunDisk);

                var sunFlare = new SSSunFlareRenderer(sunDiskScene, sunDisk);
                sunFlare.renderState.depthTest  = false;
                sunFlare.renderState.depthWrite = false;
                sunFlare.Name = "sun flare renderer";
                sunFlareScene.AddObject(sunFlare);
            }
            #endif
        }
Example #9
0
            protected void _createRenderObjects()
            {
                var laserParams = this._laser.parameters;

                if (laserParams.doEmissionFlare && _occDiskFlatObj == null) {
                    _occDiskFlatObj = new SSObjectOcclusionQueuery (new SSMeshDisk ());
                    _occDiskFlatObj.renderState.alphaBlendingOn = true;
                    _occDiskFlatObj.renderState.lighted = false;
                    _occDiskFlatObj.renderState.depthTest = true;
                    _occDiskFlatObj.renderState.depthWrite = false;
                    _occDiskFlatObj.renderState.doBillboarding = false;
                    _occDiskFlatObj.renderState.matchScaleToScreenPixels = true;
                    _occDiskFlatObj.Scale = new Vector3 (_laser.parameters.emissionOccDiskRadiusPx);
                    var color = _laser.parameters.backgroundColor; // debugging
                    color.A = _laser.parameters.emissionOccDisksAlpha;
                    _occDiskFlatObj.MainColor = color;
                    _occDiskFlatObj.Name = "occlusion disk object for laser beam's emission flare";
                    _occDiskScene.AddObject(_occDiskFlatObj);
                }

                if (_beamObj == null) {
                    _beamObj = new SLaserBeamMiddleObject (
                        _laser, _beamId, _beamScene,
                        laserParams.middleBackgroundTexture(), laserParams.middleOverlayTexture(),
                        laserParams.middleInterferenceTexture());
                    _beamObj.Name = "laser beam middle section object";
                    _beamScene.AddObject(_beamObj);
                }

                if (laserParams.doEmissionFlare && _emissionFlareUpdater == null) {
                    _emissionFlareUpdater = new SLaserEmissionFlareUpdater (
                        _laser, _beamId, _occDiskFlatObj,
                        laserParams.emissionBackgroundRect, laserParams.emissionOverlayRect);
                    _sprite2dRenderer.addUpdater(_emissionFlareUpdater);
                }

                if (laserParams.doScreenHitFlare && _hitFlareUpdater == null) {
                    float[] masterScales = { laserParams.hitFlareCoronaOverlayScale, laserParams.hitFlareCoronaOverlayScale,
                                             laserParams.hitFlareRing1Scale, laserParams.hitFlareRing2Scale };
                    _hitFlareUpdater = new SLaserScreenHitFlareUpdater (_laser, _beamId, _beamScene, null, masterScales);
                    _sprite2dRenderer.addUpdater(_hitFlareUpdater);
                }
            }