public SSunFlareUpdater( SSScene sunDiskScene, SSObjectOcclusionQueuery sunDiskObj, RectangleF[] spriteRects = null, float[] spriteScales = null ) { this._sunDiskOccScene = sunDiskScene; this._sunDiskOccObj = sunDiskObj; _rects = spriteRects ?? defaultRects; _scales = spriteScales ?? defaultSpriteScales; }
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 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; }
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 }
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); } }