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.OwnUsage
Nested classes/interfaces inherited from class gaiasky.render.system.AbstractRenderSystem
AbstractRenderSystem.RenderSystemRunnable
-
Field Summary
Fields inherited from class gaiasky.render.system.ImmediateModeRenderSystem
curr, inGpu, meshes, meshIdx, tempIndices, tempVerts
Fields inherited from class gaiasky.render.system.AbstractRenderSystem
alphas, auxd, auxf, comp, postRunnables, preRunnables, programs, rc, sceneRenderer
-
Constructor Summary
ConstructorDescriptionInstancedRenderSystem
(SceneRenderer sceneRenderer, RenderGroup rg, float[] alphas, ExtShaderProgram[] shaders) -
Method Summary
Modifier and TypeMethodDescriptionprotected 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.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.protected int
addMeshData
(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 void
ensureInstanceAttribsSize
(int size) protected void
protected void
protected abstract void
Computes the offset for each vertex attribute.protected abstract void
Computes the offset for each vertex attribute in the instanced array.protected void
postRenderObjects
(ExtShaderProgram shaderProgram, ICamera camera) protected void
preRenderObjects
(ExtShaderProgram shaderProgram, ICamera camera) protected void
renderObject
(ExtShaderProgram shaderProgram, IRenderable renderable) void
renderStud
(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, initShaderProgram, setCount, setInGpu, setOffset, vertex
Methods inherited from class gaiasky.render.system.AbstractRenderSystem
addDepthBufferUniforms, addEffectsUniforms, addGravWaveUniforms, addPostRunnables, addPreRunnables, addPreviousFrameUniforms, addRelativisticUniforms, addVRScale, getAlpha, getAlpha, getAlpha, getRenderGroup, getShaderProgram, 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:
initVertices
in 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:
renderStud
in classAbstractRenderSystem
-