public SystemRenderer(ICamera camera, GameDataManager data, GameResourceManager rescache, Game game) { this.camera = camera; AsteroidFields = new List <AsteroidFieldRenderer>(); Nebulae = new List <NebulaRenderer>(); StarSphereModels = new RigidModel[0]; Polyline = new PolylineRender(commands); FxPool = new ParticleEffectPool(commands); cache = rescache; rstate = rescache.Game.RenderState; this.game = game; gconfig = game.GetService <GameConfig>(); billboards = game.GetService <Billboards>(); resman = game.GetService <ResourceManager>(); nebulae = game.GetService <NebulaVertices>(); dot = (Texture2D)rescache.FindTexture(ResourceManager.WhiteTextureName); DebugRenderer = new PhysicsDebugRenderer(); Beams = new BeamsBuffer(); if (GLExtensions.Features430) { pointLightBuffer = new ShaderStorageBuffer(MAX_POINTS * (16 * sizeof(float))); if (pointLightCull == null) { pointLightCull = new ComputeShader(Resources.LoadString("LibreLancer.Shaders.lightingcull.glcompute")); } } }
public override bool PrepareRender(ICamera camera, NebulaRenderer nr, SystemRenderer sys) { beams = sys.Beams; renderCount = 0; for (int i = 0; i < Projectiles.Projectiles.Length; i++) { if (Projectiles.Projectiles[i].Alive) { toRender[renderCount++] = Projectiles.Projectiles[i]; } } if (renderCount > 0) { sys.AddObject(this); } return(true); }
public override bool PrepareRender(ICamera camera, NebulaRenderer nr, SystemRenderer sys) { beams = sys.Beams; renderCount = 0; for (int i = 0; i < Projectiles.Projectiles.Length; i++) { if (Projectiles.Projectiles[i].Alive) { if (Projectiles.Projectiles[i].Effect != null) { Projectiles.Projectiles[i].Effect.Resources = sys.ResourceManager; Projectiles.Projectiles[i].Effect.Pool = sys.FxPool; } toRender[renderCount++] = Projectiles.Projectiles[i]; } } if (renderCount > 0) { sys.AddObject(this); } return(true); }