Package gaiasky.render.system
Class InstancedRenderSystem
java.lang.Object
gaiasky.render.system.AbstractRenderSystem
gaiasky.render.system.ImmediateModeRenderSystem
gaiasky.render.system.InstancedRenderSystem
- All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable,IObserver,IRenderSystem
- Direct Known Subclasses:
ParticleSetInstancedRenderer,StarSetInstancedRenderer,VariableSetInstancedRenderer
Common code to all render systems that render quads with GPU instancing.
-
Nested Class Summary
Nested classes/interfaces inherited from class gaiasky.render.system.ImmediateModeRenderSystem
ImmediateModeRenderSystem.MeshData, ImmediateModeRenderSystem.OwnUsageNested classes/interfaces inherited from class gaiasky.render.system.AbstractRenderSystem
AbstractRenderSystem.RenderSystemRunnable -
Field Summary
FieldsFields inherited from class gaiasky.render.system.ImmediateModeRenderSystem
curr, inGpu, meshes, meshIdx, tempIndices, tempVertsFields inherited from class gaiasky.render.system.AbstractRenderSystem
alphas, auxd, auxf, comp, postRunnables, preRunnables, programs, rc, sceneRenderer -
Constructor Summary
ConstructorsConstructorDescriptionInstancedRenderSystem(SceneRenderer sceneRenderer, RenderGroup rg, float[] alphas, ExtShaderProgram[] shaders) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voidaddAttributesDivisor0(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.VertexAttribute> attributes) Adds the required vertex attributes for this renderer to the given list.protected abstract voidaddAttributesDivisor1(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.VertexAttribute> attributes) Adds the required vertex attributes for this renderer to the given list.protected intaddMeshData(int maxVerts0, int maxVerts1) Adds a new mesh data to the meshes list and increases the mesh data indexprotected com.badlogic.gdx.graphics.VertexAttribute[]Builds the vertex attributes with divisor=0 array and returns itprotected com.badlogic.gdx.graphics.VertexAttribute[]Builds the vertex attributes with divisor=1 array and returns itprotected voidensureInstanceAttribsSize(int size) protected voidprotected voidprotected abstract voidComputes the offset for each vertex attribute.protected abstract voidComputes the offset for each vertex attribute in the instanced array.protected voidpostRenderObjects(ExtShaderProgram shaderProgram, ICamera camera) protected voidpreRenderObjects(ExtShaderProgram shaderProgram, ICamera camera) protected voidrenderObject(ExtShaderProgram shaderProgram, IRenderable renderable) voidrenderStud(List<IRenderable> renderables, ICamera camera, double t) Methods inherited from class gaiasky.render.system.ImmediateModeRenderSystem
clearMeshData, clearMeshes, color, color, color, color, createMeshData, dispose, ensureTempIndicesSize, ensureTempVertsSize, getCount, getOffset, inGpu, setCount, setInGpu, setOffset, vertexMethods inherited from class gaiasky.render.system.AbstractRenderSystem
addDepthBufferUniforms, addEffectsUniforms, addGravWaveUniforms, addPostRunnables, addPreRunnables, addPreviousFrameUniforms, addRelativisticUniforms, addVRScale, getAlpha, getAlpha, getAlpha, getRenderGroup, getShaderProgram, initShaderProgram, render, resetFlags, resize, run, updateBatchSize
-
Field Details
-
tempInstanceAttribs
protected float[] tempInstanceAttribs
-
-
Constructor Details
-
InstancedRenderSystem
public InstancedRenderSystem(SceneRenderer sceneRenderer, RenderGroup rg, float[] alphas, ExtShaderProgram[] shaders)
-
-
Method Details
-
initVertices
protected void initVertices()- Specified by:
initVerticesin classImmediateModeRenderSystem
-
ensureInstanceAttribsSize
protected void ensureInstanceAttribsSize(int size) -
initializeModel
protected void initializeModel() -
addAttributesDivisor0
protected abstract void addAttributesDivisor0(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.VertexAttribute> attributes) Adds the required vertex attributes for this renderer to the given list. These attributes are added only once for all instances (divisor=0)- Parameters:
attributes- The list of attributes with divisor=0
-
addAttributesDivisor1
protected abstract void addAttributesDivisor1(com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.VertexAttribute> attributes) Adds the required vertex attributes for this renderer to the given list. These attributes are added for every instance (divisor=1)- Parameters:
attributes- The list of attributes with divisor=1
-
buildAttributesDivisor0
protected com.badlogic.gdx.graphics.VertexAttribute[] buildAttributesDivisor0()Builds the vertex attributes with divisor=0 array and returns it- Returns:
- The vertex attributes array
-
buildAttributesDivisor1
protected com.badlogic.gdx.graphics.VertexAttribute[] buildAttributesDivisor1()Builds the vertex attributes with divisor=1 array and returns it- Returns:
- The vertex attributes array
-
offsets0
Computes the offset for each vertex attribute. The offsets will be used later in the render stage.- Parameters:
curr- The current mesh data
-
offsets1
Computes the offset for each vertex attribute in the instanced array. The offsets will be used later in the render stage.- Parameters:
curr- The current mesh data
-
addMeshData
protected int addMeshData(int maxVerts0, int maxVerts1) Adds a new mesh data to the meshes list and increases the mesh data index- Parameters:
maxVerts0- The max number of vertices the divisor 0 mesh data can holdmaxVerts1- The max number of vertices the divisor 1 mesh data can hold- Returns:
- The index of the new mesh data
-
preRenderObjects
-
renderObject
-
postRenderObjects
-
renderStud
- Specified by:
renderStudin classAbstractRenderSystem
-