Ejemplo n.º 1
0
    def __init__(self, name, mesh_programs=None, **kwargs):
        """
        :param name: Unique name or path for the scene
        :param mesh_programs: List of MeshPrograms to apply to the scene
        :param loader: Loader class for the scene if relevant
        """
        self.name = name
        self.root_nodes = []

        # References resources in the scene
        self.nodes = []
        self.materials = []
        self.meshes = []
        self.cameras = []

        self.bbox_min = None
        self.bbox_max = None
        self.diagonal_size = 1.0

        self.bbox_vao = geometry.bbox()
        self.bbox_program = programs.load(ProgramDescription(
            label='scene_default/bbox.glsl',
            path='scene_default/bbox.glsl'))

        self._view_matrix = matrix44.create_identity()
Ejemplo n.º 2
0
    def resolve_loader(self, meta: ProgramDescription):
        """
        Resolve program loader
        """
        if not meta.loader:
            meta.loader = 'single' if meta.path else 'separate'

        for loader_cls in self._loaders:
            if loader_cls.name == meta.loader:
                meta.loader_cls = loader_cls
                break
        else:
            raise ImproperlyConfigured(
                (
                    "Program {} has no loader class registered."
                    "Check PROGRAM_LOADERS or PROGRAM_DIRS"
                ).format(meta.path)
            )
Ejemplo n.º 3
0
from demosys.resources.meta import ProgramDescription

effect_packages = []

resources = [
    ProgramDescription(label="raymarching_simple", path="raymarching/raymarching_simple.glsl")
]
Ejemplo n.º 4
0
import os

from demosys.resources.meta import ProgramDescription, TextureDescription


def local(path):
    """
    Prepend the effect package name to a path so resources
    can still be loaded when copied into a new effect package.
    """
    return os.path.join(__name__.split('.')[-2], path)


effect_packages = []

resources = [
    TextureDescription(label='milkyway', path=local('MilkyWayPanorama4K.jpg')),
    ProgramDescription(label='milkyway', path=local('milkyway.glsl')),

    TextureDescription(label='sun', path=local('2k_sun.jpg'), mipmap=True),
    ProgramDescription(label='sun', path=local('sun.glsl')),

    TextureDescription(label='earth_day', path=local('2k_earth_daymap.jpg'), mipmap=True),
    TextureDescription(label='earth_night', path=local('2k_earth_nightmap.jpg'), mipmap=True),
    TextureDescription(label='earth_clouds', path=local('2k_earth_clouds.jpg'), mipmap=True),
    ProgramDescription(label='earth', path=local('earth.glsl')),
]
Ejemplo n.º 5
0
from demosys.resources.meta import ProgramDescription

effect_packages = []

resources = [
    ProgramDescription(label="demosys.deferred.point_light",
                       path="deferred/light_point.glsl"),
    ProgramDescription(label="demosys.deferred.debug",
                       path="deferred/debug.glsl"),
    ProgramDescription(label="demosys.deferred.combine",
                       path="deferred/combine.glsl"),
]
Ejemplo n.º 6
0
from demosys.resources.meta import SceneDescription, ProgramDescription

effect_packages = []

resources = [
    ProgramDescription(label="minecraft", path='minecraft/minecraft.glsl'),
    SceneDescription(label='lost_empire',
                     path='minecraft/lost-empire/lost_empire.obj.bin'),
]
Ejemplo n.º 7
0
 def __init__(self, program=None, **kwargs):
     super().__init__(program=None)
     self.program = programs.load(
         ProgramDescription(label="scene_default/texture.glsl",
                            path="scene_default/texture.glsl"))
Ejemplo n.º 8
0
from demosys.resources.meta import ProgramDescription, TextureDescription

effect_packages = []

resources = [
    ProgramDescription(label="cube_multi_fade",
                       path='geocubes/cube_multi_fade.glsl'),
    ProgramDescription(label="cube_texture_light",
                       path='geocubes/cube_texture_light.glsl'),
    ProgramDescription(label="quad_fs_uvscale",
                       path='geocubes/quad_fs_uvscale.glsl'),
    TextureDescription(label="texture", path='geocubes/texture.png'),
    TextureDescription(label="GreenFabric", path='geocubes/GreenFabric.png'),
]
Ejemplo n.º 9
0
from demosys.resources.meta import ProgramDescription, TextureDescription

effect_packages = []

resources = [
    # Program in one single file
    # ProgramDescription(label="terrain", path="terrain/terrain.glsl"),

    # Program split into separate shader files
    ProgramDescription(
        label="terrain",
        vertex_shader="terrain/terrain_vs.glsl",
        tess_control_shader="terrain/terrain_tc.glsl",
        tess_evaluation_shader="terrain/terrain_te.glsl",
        fragment_shader="terrain/terrain_fs.glsl",
    ),
    TextureDescription(label="heightmap", path="terrain/Ridges_01_DISP.jpg"),
]
Ejemplo n.º 10
0
from demosys.resources.meta import ProgramDescription, TextureDescription

effect_packages = []

resources = [
    ProgramDescription(label="transform", path="feedback/transform.glsl"),
    ProgramDescription(label="billboards", path="feedback/billboards.glsl"),
    TextureDescription(label="particle", path="feedback/particle.png"),
]
Ejemplo n.º 11
0
from demosys.resources.meta import TextureDescription, ProgramDescription

effect_packages = []

resources = [
    ProgramDescription(label="plain", path="cubes/cube_plain.glsl"),
    ProgramDescription(label="light", path="cubes/cube_light.glsl"),
    ProgramDescription(
        label="textured",
        vertex_shader="cubes/cube_textured_vs.glsl",
        fragment_shader="cubes/cube_textured_fs.glsl",
    ),
    TextureDescription(label="crate", path="cubes/crate.jpg"),
]
Ejemplo n.º 12
0
from demosys.resources.meta import TextureDescription, ProgramDescription, DataDescription

effect_packages = []

resources = [
    # Font meta and texture
    DataDescription(
        label='demosys.program.font_meta',
        path='demosys/text/meta.json', loader='json',
    ),
    TextureDescription(
        label='demosys.text.font_texture',
        path='demosys/text/VeraMono.png',
        loader='array',
        layers=190,
        mipmap=True,
    ),

    # Textwriter shader
    ProgramDescription(
        label='demosys.text.program_writer_2d',
        path='demosys/text/textwriter2d.glsl',
    ),

    # TextRenderer shader
    ProgramDescription(
        label='demosys.text.program_renderer_2d',
        path='demosys/text/view_renderer_texture.glsl',
    ),
]
Ejemplo n.º 13
0
import os

from demosys.resources.meta import ProgramDescription


def local(path):
    """
    Prepend the effect package name to a path so resources
    can still be loaded when copied into a new effect package.
    """
    return os.path.join(__name__.split('.')[-2], path)


effect_packages = []

resources = [
    ProgramDescription(label='cube_plain', path=local('cube_plain.glsl')),
]
Ejemplo n.º 14
0
from demosys.resources.meta import TextureDescription, ProgramDescription

effect_packages = []

resources = [
    ProgramDescription(label="shader", path="warpspeed/shader.glsl"),
    TextureDescription(label="WarpspeedTexture",
                       path="warpspeed/WarpspeedTexture.jpg"),
    TextureDescription(label="WarpspeedTexture2",
                       path="warpspeed/WarpspeedTexture2.jpg"),
]
Ejemplo n.º 15
0
 def load_program(self, path):
     return resources.programs.load(
         ProgramDescription(label=path, path=path))