I’ve tried creating a mesh with billboards as instances. I needed to adjust zOffset to fix some visual artifacts, but “zOffset” doesn’t work in the billboard mode. Maybe that is by design but looks like a bug to me. If there is an alternative approach, please let me know.
Hey! yeah this seems weird. cc @Cedric to see if he can have a look
add @sebavan as well
I quickly checked the Spector trace and nothing seems obviously wrong
It’s expected. According to the specs (glPolygonOffset - OpenGL 4 Reference Pages):
each fragment's depth value will be offset after it is interpolated from the depth
values of the appropriate vertices. The value of the offset is factor×DZ+r×units,
where DZ is a measurement of the change in depth relative to the screen area of the
polygon, and r is the smallest value that is guaranteed to produce a resolvable
offset for a given implementation.
BILLBOARDMODE_ALL mode, DZ is always 0 so the
zOffset value has no impact (it is the
factor term in
factor×DZ+r×units,). However, you can use the new
material.zOffsetUnits to offset the depth (it’s the
units term in the
factor×DZ+r×units expression). As
r is small, you will need a very small
zOffsetUnits value to see a difference (something like -1000000).
Man! You nailed it. We did not have time to look into it
Thanks a ton @Evgeni_Popov
Thanks a lot for the explanation!