2016-11-13 12:35 GMT-06:00 Andrew Wesie awesie@gmail.com:
SV_VertexID does not have base vertex index applied, but gl_VertexID does. Fix the vertex ID by subtracting a uniform that is set to the base vertex index before each draw.
Signed-off-by: Andrew Wesie awesie@gmail.com
dlls/wined3d/cs.c | 2 +- dlls/wined3d/device.c | 6 +++++- dlls/wined3d/glsl_shader.c | 13 ++++++++++++- dlls/wined3d/state.c | 7 ++++++- dlls/wined3d/wined3d_private.h | 1 + 5 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 7af0b81..e71c873 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -481,7 +481,7 @@ void wined3d_cs_emit_draw(struct wined3d_cs *cs, int base_vertex_idx, unsigned i
op = cs->ops->require_space(cs, sizeof(*op)); op->opcode = WINED3D_CS_OP_DRAW;
- op->base_vertex_idx = base_vertex_idx;
- op->base_vertex_idx = indexed ? base_vertex_idx : 0; op->start_idx = start_idx; op->index_count = index_count; op->start_instance = start_instance;
This should probably be a separate patch.
Otherwise it seems good to me.