instancing_shader

</> ursina.shaders.instancing_shader

Variables

.instancing_shader

default: Shader(name='instancing_shader', language=Shader.G...


Examples


from ursina import Ursina, window, Entity, EditorCamera, Vec3, color, application, time, Cone import random window.vsync = False app = Ursina() instances = [] Entity(model='plane', texture='grass', scale=128) application.asset_folder = application.asset_folder.parent.parent p = Entity(model=Cone(5), y=1, texture='brick') p.model.uvs = [(v[0],v[1]) for v in p.model.vertices] p.model.generate() p.shader = instancing_shader p.setInstanceCount(256) for z in range(16):     for x in range(16):         e = Entity(add_to_scene_entities=False, position=Vec3(x, 0, z), color=color.lime, rotation_y=random.random()*360)         instances.append(e)         print(e.quaternion, Quat()) p.set_shader_input('position_offsets', [e.position*4 for e in instances]) p.set_shader_input('rotation_offsets', [e.quaternion for e in instances]) p.set_shader_input('scale_multipliers',[e.scale*random.uniform(.9,2) for e in instances]) p.set_shader_input('colors', p.model.colors) print(len(p.model.vertices) * len(instances)) EditorCamera() app.run()