Skip to content

Commit 0fd1ee7

Browse files
committed
Fix flw_vertexId
- Need to subtract base instance from gl instance ID
1 parent a2239f7 commit 0fd1ee7

File tree

5 files changed

+12
-7
lines changed

5 files changed

+12
-7
lines changed

common/src/backend/java/dev/engine_room/flywheel/backend/engine/instancing/InstancedDrawManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ private void submitDraws() {
160160

161161
uploadMaterialUniform(program, material);
162162

163-
program.setUInt("_flw_vertexOffset", drawCall.mesh()
163+
program.setUInt("_flw_baseVertex", drawCall.mesh()
164164
.baseVertex());
165165

166166
MaterialRenderState.setup(material);
@@ -184,7 +184,7 @@ private void submitOitDraws(PipelineCompiler.OitMode mode) {
184184

185185
uploadMaterialUniform(program, material);
186186

187-
program.setUInt("_flw_vertexOffset", drawCall.mesh()
187+
program.setUInt("_flw_baseVertex", drawCall.mesh()
188188
.baseVertex());
189189

190190
MaterialRenderState.setupOit(material);

common/src/backend/resources/assets/flywheel/flywheel/internal/api_impl.vert

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ out float flw_distance;
1313

1414
FlwMaterial flw_material;
1515

16-
#define flw_vertexId gl_VertexID
16+
uint flw_vertexId;

common/src/backend/resources/assets/flywheel/flywheel/internal/common.vert

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ mat3 _flw_normalMatrix;
7575
flat out uvec2 _flw_ids;
7676
#endif
7777

78-
void _flw_main(in FlwInstance instance, in uint stableInstanceID, in uint modelID) {
78+
void _flw_main(in FlwInstance instance, in uint stableInstanceID, in uint baseVertex) {
79+
flw_vertexId = gl_VertexID - baseVertex;
80+
7981
_flw_layoutVertex();
8082
flw_instanceVertex(instance);
8183
flw_materialVertex();
@@ -96,6 +98,6 @@ void _flw_main(in FlwInstance instance, in uint stableInstanceID, in uint modelI
9698
gl_Position = flw_viewProjection * flw_vertexPos;
9799

98100
#ifdef _FLW_DEBUG
99-
_flw_ids = uvec2(stableInstanceID, modelID);
101+
_flw_ids = uvec2(stableInstanceID, baseVertex);
100102
#endif
101103
}

common/src/backend/resources/assets/flywheel/flywheel/internal/instancing/main.vert

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ uniform mat4 _flw_modelMatrixUniform;
1010
uniform mat3 _flw_normalMatrixUniform;
1111
#endif
1212

13-
uniform uint _flw_vertexOffset;
13+
uniform uint _flw_baseVertex;
1414

1515
void main() {
1616
_flw_unpackMaterialProperties(_flw_packedMaterial.y, flw_material);
@@ -22,5 +22,5 @@ void main() {
2222
_flw_normalMatrix = _flw_normalMatrixUniform;
2323
#endif
2424

25-
_flw_main(instance, uint(gl_InstanceID), _flw_vertexOffset);
25+
_flw_main(instance, uint(gl_InstanceID), _flw_baseVertex);
2626
}

docs/flywheel/api/snippets/vertex.glsl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ ivec2 flw_vertexOverlay;
88
vec2 flw_vertexLight;
99
vec3 flw_vertexNormal;
1010

11+
// The index of the current vertex in the mesh that is being drawn.
12+
/*const*/ uint flw_vertexId;
13+
1114
/*const*/ FlwMaterial flw_material;
1215

1316
// To be implemented by the instance shader.

0 commit comments

Comments
 (0)