Page MenuHome

Emitter particle system viewport display axis/cross/circle shows only first two particles
Closed, ResolvedPublicBUG

Description

System Information
Operating system: Linux-4.15.0-66-generic-x86_64-with-Ubuntu-18.04-bionic 64 Bits
Graphics card: GeForce GTX 1080/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 440.26

Blender Version
Broken: version: 2.81 (sub 16), branch: master, commit date: 2019-11-08 22:59, hash: rB0a0d735acd6e
Worked: version: 2.80 downloaded from blender.org (blender-2.80-linux-glibc217-x86_64.tar.bz2)

Short description of error
For an emitter particle system, Viewport Display -> Display As -> Circle/Cross/Axis show only first two particles (see screenshot). This seems partially GPU/driver-dependent, as I've been able to duplicate with two separate Nvidia video cards (using both a very old and a brand new version of the proprietary driver, as described below), but the bug is not reproducible on my laptop w/ integrated Intel graphics using the same Blender version.

Specifically, I've duplicated this problem with the above Blender 2.8.1 version (beta download from blender.org in blender-2.81-0a0d735acd6e-linux-glibc217-x86_64.tar.bz2) on:

Machine #1: Ubuntu 18.04 w/ GTX 1080 using Nvidia driver version 440.26
Machine #2: Mint 19 w/ GTX 760 using Nvidia driver version 390.116

I've also verified that the Blender 2.8.2 alpha version and a version built from a recent Git pull exhibit the problem, but the stable 2.80 version (blender-2.80-linux-glibc217-x86_64.tar.bz2) works fine.

Exact steps for others to reproduce the error

  1. File -> New -> General
  2. Select default cube
  3. Add a particle system
  4. Start animation -- particle system is displayed in viewport.
  5. Switch Particle Properties -> Viewport Display -> Display As from "Rendered" to any of Circle/Cross/Axis. Particles disappear, and when animation restarts from frame 1, only first two particles are shown.
  6. Switch Display As back to "Rendered" or "Point", and normal particle system display reappears
  • Screenshot **

Event Timeline

A "git bisect" blames this commit:

3a08153d7a842b7ab1e40a9048730e1a3ddab5f7 is the first bad commit
commit 3a08153d7a842b7ab1e40a9048730e1a3ddab5f7
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Fri May 31 01:45:41 2019 +0200

    DRW: Refactor to support draw call batching
    
    Reviewers: brecht
    
    Differential Revision: D4997

And a "git bisect" of the tmp-drw-callbatching branch identifies this as the bad commit:

commit d2e9e2713a943cfd3585784bf59f650369c305ed (HEAD, refs/bisect/bad)
Author: Clément Foucault <foucault.clem@gmail.com>
Date:   Sat Jun 1 16:34:50 2019 +0200

    DRW: Use Model Matrix UBO blocks when possible
    
    This bind the correct UBO block and pass the id inside the block
    using a single int uniform.
    
    There is still a legacy path for shader not using the modelBlock

I guess the issue is that, when rendering particles as circles/crosses/axes, all the instances are intended to share the same resource_id, so we want to enable IN_PLACE_INSTANCES in the associated particle shaders. I've created a patch as D6220, though I'm not sure what reviewers to assign, etc.

Philipp Oeser (lichtwerk) raised the priority of this task from 50 to High.Nov 11 2019, 2:37 PM

Nice catch.

Also note that T63523: Emission Particle Viewport Display Bugs was marked resolved (but that was prior to rB3a08153d7a84...).
So it was indeed working at some point [2.80 release was fine], regarding to our triaging playbook, will set to High prio, since we know the breaking commit...