Page MenuHome

b28 shader module example in docs produces unexpected results
Open, Confirmed, LowPublic

Description

System Information
Operating system: NA
Graphics card: NA

Blender Version
Broken: any current 2.80
Worked: several month old versions

Short description of error

run this example as presented in the docs : https://docs.blender.org/api/blender2.8/gpu.html#mesh-with-random-vertex-colors

import bpy
import gpu
import numpy as np
from random import random
from gpu_extras.batch import batch_for_shader

mesh = bpy.context.active_object.data
mesh.calc_loop_triangles()

vertices = np.empty((len(mesh.vertices), 3), 'f')
indices = np.empty((len(mesh.loop_triangles), 3), 'i')

mesh.vertices.foreach_get(
    "co", np.reshape(vertices, len(mesh.vertices) * 3))
mesh.loop_triangles.foreach_get(
    "vertices", np.reshape(indices, len(mesh.loop_triangles) * 3))

vertex_colors = [(random(), random(), random(), 1) for _ in range(len(mesh.vertices))]

shader = gpu.shader.from_builtin('3D_SMOOTH_COLOR')
batch = batch_for_shader(
    shader, 'TRIS',
    {"pos": vertices, "color": vertex_colors},
    indices=indices,
)


def draw():
    batch.draw(shader)


bpy.types.SpaceView3D.draw_handler_add(draw, (), 'WINDOW', 'POST_VIEW')

will display a mesh where some faces are not drawn: see

Details

Type
Bug

Event Timeline

Germano Cavalcante (mano-wii) triaged this task as Confirmed, Low priority.

In fact something has changed in the meantime and now you need to enable depth testing before drawing...

bgl.glEnable(bgl.GL_DEPTH_TEST)