Skip to content

Resource revamp #1661

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Mar 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 12 additions & 12 deletions arcade/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -397,22 +397,22 @@ def configure_logging(level: Optional[int] = None):
# Piggyback on pyglet's doc run detection
if not getattr(sys, 'is_pyglet_doc_run', False):
# Auto load fonts
load_font(":resources:fonts/ttf/Kenney_Blocks.ttf")
load_font(":resources:fonts/ttf/Kenney_Future.ttf")
load_font(":resources:fonts/ttf/Kenney_Future_Narrow.ttf")
load_font(":resources:fonts/ttf/Kenney_High.ttf")
load_font(":resources:fonts/ttf/Kenney_High_Square.ttf")
load_font(":resources:fonts/ttf/Kenney_Mini.ttf")
load_font(":resources:fonts/ttf/Kenney_Mini_Square.ttf")
load_font(":resources:fonts/ttf/Kenney_Pixel.ttf")
load_font(":resources:fonts/ttf/Kenney_Pixel_Square.ttf")
load_font(":resources:fonts/ttf/Kenney_Rocket.ttf")
load_font(":resources:fonts/ttf/Kenney_Rocket_Square.ttf")
load_font(":system:fonts/ttf/Kenney_Blocks.ttf")
load_font(":system:fonts/ttf/Kenney_Future.ttf")
load_font(":system:fonts/ttf/Kenney_Future_Narrow.ttf")
load_font(":system:fonts/ttf/Kenney_High.ttf")
load_font(":system:fonts/ttf/Kenney_High_Square.ttf")
load_font(":system:fonts/ttf/Kenney_Mini.ttf")
load_font(":system:fonts/ttf/Kenney_Mini_Square.ttf")
load_font(":system:fonts/ttf/Kenney_Pixel.ttf")
load_font(":system:fonts/ttf/Kenney_Pixel_Square.ttf")
load_font(":system:fonts/ttf/Kenney_Rocket.ttf")
load_font(":system:fonts/ttf/Kenney_Rocket_Square.ttf")

# Load additional game controller mappings to Pyglet
if not pyglet.options['headless']:
try:
mappings_file = resources.resolve_resource_path(":resources:gamecontrollerdb.txt")
mappings_file = resources.resolve(":system:gamecontrollerdb.txt")
pyglet.input.controller.add_mappings_from_file(mappings_file)
except AssertionError:
pass
4 changes: 2 additions & 2 deletions arcade/__pyinstaller/hook-arcade.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@

datas = [
(
arcade_path / "resources",
"./arcade/resources",
arcade_path / "resources" / "system",
"./arcade/resources/system",
),
]

Expand Down
4 changes: 2 additions & 2 deletions arcade/background/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import arcade.gl as gl
from arcade import get_window
from arcade.resources import resolve_resource_path
from arcade.resources import resolve

from arcade.background.background_texture import BackgroundTexture
from arcade.background.background import Background
Expand All @@ -29,7 +29,7 @@ def texture_from_file(
) -> BackgroundTexture:
_context = get_window().ctx

with Image.open(resolve_resource_path(tex_src)).convert("RGBA") as img:
with Image.open(resolve(tex_src)).convert("RGBA") as img:
texture = _context.texture(
img.size,
data=img.transpose(Image.Transpose.FLIP_TOP_BOTTOM).tobytes(),
Expand Down
4 changes: 2 additions & 2 deletions arcade/background/background.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ def __init__(

if shader is None:
shader = get_window().ctx.load_program(
vertex_shader=":resources:/shaders/background_vs.glsl",
fragment_shader=":resources:/shaders/background_fs.glsl",
vertex_shader=":system:/shaders/background_vs.glsl",
fragment_shader=":system:/shaders/background_fs.glsl",
)
self.shader = shader

Expand Down
4 changes: 2 additions & 2 deletions arcade/background/background_texture.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from PIL import Image

import arcade.gl as gl
from arcade.resources import resolve_resource_path
from arcade.resources import resolve
from arcade.window_commands import get_window
from pyglet.math import Mat3
from arcade import ArcadeContext
Expand Down Expand Up @@ -143,7 +143,7 @@ def from_file(
):
_context = get_window().ctx

with Image.open(resolve_resource_path(tex_src)).convert("RGBA") as img:
with Image.open(resolve(tex_src)).convert("RGBA") as img:
texture = _context.texture(
img.size,
data=img.transpose(Image.Transpose.FLIP_TOP_BOTTOM).tobytes(),
Expand Down
4 changes: 2 additions & 2 deletions arcade/cache/hit_box.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from collections import OrderedDict

from arcade.types import PointList
from arcade.resources import resolve_resource_path
from arcade.resources import resolve

if TYPE_CHECKING:
from arcade import Texture
Expand Down Expand Up @@ -102,7 +102,7 @@ def load(self, path: Union[str, Path]) -> None:

if the file extension is ".gz" the file will be compressed.
"""
path = resolve_resource_path(path)
path = resolve(path)
if path.suffix == ".gz":
with gzip.open(path, mode="rb") as fd:
data = json.loads(fd.read())
Expand Down
92 changes: 46 additions & 46 deletions arcade/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,59 +64,59 @@ def __init__(self, window: pyglet.window.Window, gc_mode: str = "context_gc", gl
# FIXME: These pre-created resources needs to be packaged nicely
# Just having them globally in the context is probably not a good idea
self.line_vertex_shader: Program = self.load_program(
vertex_shader=":resources:shaders/shapes/line/line_vertex_shader_vs.glsl",
fragment_shader=":resources:shaders/shapes/line/line_vertex_shader_fs.glsl",
vertex_shader=":system:shaders/shapes/line/line_vertex_shader_vs.glsl",
fragment_shader=":system:shaders/shapes/line/line_vertex_shader_fs.glsl",
)
self.line_generic_with_colors_program: Program = self.load_program(
vertex_shader=":resources:shaders/shapes/line/line_generic_with_colors_vs.glsl",
fragment_shader=":resources:shaders/shapes/line/line_generic_with_colors_fs.glsl",
vertex_shader=":system:shaders/shapes/line/line_generic_with_colors_vs.glsl",
fragment_shader=":system:shaders/shapes/line/line_generic_with_colors_fs.glsl",
)
self.shape_element_list_program: Program = self.load_program(
vertex_shader=":resources:shaders/shape_element_list_vs.glsl",
fragment_shader=":resources:shaders/shape_element_list_fs.glsl",
vertex_shader=":system:shaders/shape_element_list_vs.glsl",
fragment_shader=":system:shaders/shape_element_list_fs.glsl",
)
self.sprite_list_program_no_cull: Program = self.load_program(
vertex_shader=":resources:shaders/sprites/sprite_list_geometry_vs.glsl",
geometry_shader=":resources:shaders/sprites/sprite_list_geometry_no_cull_geo.glsl",
fragment_shader=":resources:shaders/sprites/sprite_list_geometry_fs.glsl",
vertex_shader=":system:shaders/sprites/sprite_list_geometry_vs.glsl",
geometry_shader=":system:shaders/sprites/sprite_list_geometry_no_cull_geo.glsl",
fragment_shader=":system:shaders/sprites/sprite_list_geometry_fs.glsl",
)
self.sprite_list_program_no_cull["sprite_texture"] = 0
self.sprite_list_program_no_cull["uv_texture"] = 1

self.sprite_list_program_cull: Program = self.load_program(
vertex_shader=":resources:shaders/sprites/sprite_list_geometry_vs.glsl",
geometry_shader=":resources:shaders/sprites/sprite_list_geometry_cull_geo.glsl",
fragment_shader=":resources:shaders/sprites/sprite_list_geometry_fs.glsl",
vertex_shader=":system:shaders/sprites/sprite_list_geometry_vs.glsl",
geometry_shader=":system:shaders/sprites/sprite_list_geometry_cull_geo.glsl",
fragment_shader=":system:shaders/sprites/sprite_list_geometry_fs.glsl",
)
self.sprite_list_program_cull["sprite_texture"] = 0
self.sprite_list_program_cull["uv_texture"] = 1

# Shapes
self.shape_line_program: Program = self.load_program(
vertex_shader=":resources:shaders/shapes/line/unbuffered_vs.glsl",
fragment_shader=":resources:shaders/shapes/line/unbuffered_fs.glsl",
geometry_shader=":resources:shaders/shapes/line/unbuffered_geo.glsl",
vertex_shader=":system:shaders/shapes/line/unbuffered_vs.glsl",
fragment_shader=":system:shaders/shapes/line/unbuffered_fs.glsl",
geometry_shader=":system:shaders/shapes/line/unbuffered_geo.glsl",
)
self.shape_ellipse_filled_unbuffered_program: Program = self.load_program(
vertex_shader=":resources:shaders/shapes/ellipse/filled_unbuffered_vs.glsl",
fragment_shader=":resources:shaders/shapes/ellipse/filled_unbuffered_fs.glsl",
geometry_shader=":resources:shaders/shapes/ellipse/filled_unbuffered_geo.glsl",
vertex_shader=":system:shaders/shapes/ellipse/filled_unbuffered_vs.glsl",
fragment_shader=":system:shaders/shapes/ellipse/filled_unbuffered_fs.glsl",
geometry_shader=":system:shaders/shapes/ellipse/filled_unbuffered_geo.glsl",
)
self.shape_ellipse_outline_unbuffered_program: Program = self.load_program(
vertex_shader=":resources:shaders/shapes/ellipse/outline_unbuffered_vs.glsl",
fragment_shader=":resources:shaders/shapes/ellipse/outline_unbuffered_fs.glsl",
geometry_shader=":resources:shaders/shapes/ellipse/outline_unbuffered_geo.glsl",
vertex_shader=":system:shaders/shapes/ellipse/outline_unbuffered_vs.glsl",
fragment_shader=":system:shaders/shapes/ellipse/outline_unbuffered_fs.glsl",
geometry_shader=":system:shaders/shapes/ellipse/outline_unbuffered_geo.glsl",
)
self.shape_rectangle_filled_unbuffered_program = self.load_program(
vertex_shader=":resources:shaders/shapes/rectangle/filled_unbuffered_vs.glsl",
fragment_shader=":resources:shaders/shapes/rectangle/filled_unbuffered_fs.glsl",
geometry_shader=":resources:shaders/shapes/rectangle/filled_unbuffered_geo.glsl",
vertex_shader=":system:shaders/shapes/rectangle/filled_unbuffered_vs.glsl",
fragment_shader=":system:shaders/shapes/rectangle/filled_unbuffered_fs.glsl",
geometry_shader=":system:shaders/shapes/rectangle/filled_unbuffered_geo.glsl",
)
# Atlas shaders
self.atlas_resize_program: Program = self.load_program(
vertex_shader=":resources:shaders/atlas/resize_vs.glsl",
geometry_shader=":resources:shaders/atlas/resize_gs.glsl",
fragment_shader=":resources:shaders/atlas/resize_fs.glsl",
vertex_shader=":system:shaders/atlas/resize_vs.glsl",
geometry_shader=":system:shaders/atlas/resize_gs.glsl",
fragment_shader=":system:shaders/atlas/resize_fs.glsl",
)
self.atlas_resize_program["atlas_old"] = 0 # Configure texture channels
self.atlas_resize_program["atlas_new"] = 1
Expand All @@ -125,8 +125,8 @@ def __init__(self, window: pyglet.window.Window, gc_mode: str = "context_gc", gl

# SpriteList collision resources
self.collision_detection_program = self.load_program(
vertex_shader=":resources:shaders/collision/col_trans_vs.glsl",
geometry_shader=":resources:shaders/collision/col_trans_gs.glsl",
vertex_shader=":system:shaders/collision/col_trans_vs.glsl",
geometry_shader=":system:shaders/collision/col_trans_gs.glsl",
)
self.collision_buffer = self.buffer(reserve=1024 * 4)
self.collision_query = self.query(samples=False, time=False, primitives=True)
Expand Down Expand Up @@ -349,12 +349,12 @@ def load_program(
varyings: Optional[Sequence[str]] = None,
varyings_capture_mode: str = "interleaved",
) -> Program:
"""Create a new program given a file names that contain the vertex shader and
"""
Create a new program given a file names that contain the vertex shader and
fragment shader. Note that fragment and geometry shader are optional for
when transform shaders are loaded.

This method also supports the ``:resources:`` prefix.
It's recommended to use absolute paths, but not required.
This method also supports the resource handles.

Example::

Expand All @@ -380,27 +380,27 @@ def load_program(
Based on these settings the `transform()` method will accept a single
buffer or a list of buffer.
"""
from arcade.resources import resolve_resource_path
from arcade.resources import resolve

vertex_shader_src = resolve_resource_path(vertex_shader).read_text()
vertex_shader_src = resolve(vertex_shader).read_text()
fragment_shader_src = None
geometry_shader_src = None
tess_control_src = None
tess_evaluation_src = None

common_src = [resolve_resource_path(c).read_text() for c in common]
common_src = [resolve(c).read_text() for c in common]

if fragment_shader:
fragment_shader_src = resolve_resource_path(fragment_shader).read_text()
fragment_shader_src = resolve(fragment_shader).read_text()
fragment_shader_src = self.shader_inc(fragment_shader_src)

if geometry_shader:
geometry_shader_src = resolve_resource_path(geometry_shader).read_text()
geometry_shader_src = resolve(geometry_shader).read_text()
geometry_shader_src = self.shader_inc(geometry_shader_src)

if tess_control_shader and tess_evaluation_shader:
tess_control_src = resolve_resource_path(tess_control_shader).read_text()
tess_evaluation_src = resolve_resource_path(
tess_control_src = resolve(tess_control_shader).read_text()
tess_evaluation_src = resolve(
tess_evaluation_shader
).read_text()
tess_control_src = self.shader_inc(tess_control_src)
Expand Down Expand Up @@ -430,9 +430,9 @@ def load_compute_shader(self, path: Union[str, Path], common: Iterable[Union[str
:param Union[str,pathlib.Path] path: Path to texture
:param Iterable[Union[str,pathlib.Path]] common: Common source injected into compute shader
"""
from arcade.resources import resolve_resource_path
path = resolve_resource_path(path)
common_src = [resolve_resource_path(c).read_text() for c in common]
from arcade.resources import resolve
path = resolve(path)
common_src = [resolve(c).read_text() for c in common]
return self.compute_shader(
source=self.shader_inc(path.read_text()),
common=common_src,
Expand Down Expand Up @@ -460,9 +460,9 @@ def load_texture(
:param bool flip: Flips the image upside down
:param bool build_mipmaps: Build mipmaps for the texture
"""
from arcade.resources import resolve_resource_path
from arcade.resources import resolve

path = resolve_resource_path(path)
path = resolve(path)

image = Image.open(str(path))

Expand Down Expand Up @@ -493,12 +493,12 @@ def shader_inc(self, source: str) -> str:

:param str source: Shader
"""
from arcade.resources import resolve_resource_path
from arcade.resources import resolve
lines = source.splitlines()
for i, line in enumerate(lines):
line = line.strip()
if line.startswith("#include"):
path = resolve_resource_path(line.split()[1].replace('"', ""))
path = resolve(line.split()[1].replace('"', ""))
lines[i] = path.read_text()
return "\n".join(lines)

Expand Down
2 changes: 1 addition & 1 deletion arcade/experimental/atlas_load_save.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from arcade.texture_atlas.helpers import save_atlas, load_atlas

MODE = 'load'
RESOURCE_ROOT = arcade.resources.RESOURCE_PATH
RESOURCE_ROOT = arcade.resources.ASSET_PATH
DESTINATION = Path.cwd()

texture_paths: List[Path] = []
Expand Down
6 changes: 3 additions & 3 deletions arcade/experimental/bloom_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ def __init__(
):
self.shadertoy = Shadertoy.create_from_file(
(width, height),
":resources:shaders/bloom/bloom_filter_image.glsl"
":system:shaders/bloom/bloom_filter_image.glsl"
)
self.fbo = self.shadertoy.ctx.framebuffer(
color_attachments=[self.shadertoy.ctx.texture((width, height), components=4)]
)

self.shadertoy.buffer_a = self.shadertoy.create_buffer_from_file(":resources:shaders/bloom/bloom_filter_a.glsl")
self.shadertoy.buffer_a = self.shadertoy.create_buffer_from_file(":system:shaders/bloom/bloom_filter_a.glsl")
self.shadertoy.buffer_a.program['intensity'] = intensity
self.shadertoy.buffer_a.channel_0 = self.fbo.color_attachments[0]

self.shadertoy.buffer_b = self.shadertoy.create_buffer_from_file(":resources:shaders/bloom/bloom_filter_b.glsl")
self.shadertoy.buffer_b = self.shadertoy.create_buffer_from_file(":system:shaders/bloom/bloom_filter_b.glsl")
self.shadertoy.buffer_b.channel_0 = self.shadertoy.buffer_a.texture

self.shadertoy.channel_0 = self.shadertoy.buffer_a.texture
Expand Down
10 changes: 5 additions & 5 deletions arcade/experimental/lights.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,13 @@ def __init__(self, width: int, height: int):
),
])
self._light_program = self.ctx.load_program(
vertex_shader=":resources:shaders/lights/point_lights_vs.glsl",
geometry_shader=":resources:shaders/lights/point_lights_geo.glsl",
fragment_shader=":resources:shaders/lights/point_lights_fs.glsl",
vertex_shader=":system:shaders/lights/point_lights_vs.glsl",
geometry_shader=":system:shaders/lights/point_lights_geo.glsl",
fragment_shader=":system:shaders/lights/point_lights_fs.glsl",
)
self._combine_program = self.ctx.load_program(
vertex_shader=":resources:shaders/lights/combine_vs.glsl",
fragment_shader=":resources:shaders/lights/combine_fs.glsl",
vertex_shader=":system:shaders/lights/combine_vs.glsl",
fragment_shader=":system:shaders/lights/combine_fs.glsl",
)
# NOTE: Diffuse buffer created in parent
self._light_buffer = self.ctx.framebuffer(color_attachments=self.ctx.texture((width, height), components=3))
Expand Down
16 changes: 8 additions & 8 deletions arcade/experimental/postprocessing.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ def __init__(self, size: Tuple[int, int], kernel_size=5, sigma=2, multiplier=1,
self._fbo = self.ctx.framebuffer(color_attachments=color_attachment)
self._program = self.ctx.load_program(
# defines=self._create_kernel(),
vertex_shader=':resources:shaders/texture_default_projection_vs.glsl',
fragment_shader=':resources:shaders/postprocessing/gaussian_blur_x_fs.glsl',
vertex_shader=':system:shaders/texture_default_projection_vs.glsl',
fragment_shader=':system:shaders/postprocessing/gaussian_blur_x_fs.glsl',
)
self._quad_fs = geometry.quad_2d_fs()

Expand All @@ -113,8 +113,8 @@ def __init__(self, size: Tuple[int, int], kernel_size=5, sigma=2, multiplier=1,
wrap_y=self.ctx.CLAMP_TO_EDGE))
self._program = self.ctx.load_program(
# defines=self._create_kernel(),
vertex_shader=':resources:shaders/texture_default_projection_vs.glsl',
fragment_shader=':resources:shaders/postprocessing/gaussian_blur_y_fs.glsl',
vertex_shader=':system:shaders/texture_default_projection_vs.glsl',
fragment_shader=':system:shaders/postprocessing/gaussian_blur_y_fs.glsl',
)
self._quad_fs = geometry.quad_2d_fs()

Expand Down Expand Up @@ -182,14 +182,14 @@ def __init__(self,
self._cb_luma_buffer = self.ctx.framebuffer(color_attachments=[luma_tex])
# Buffer for the converted luma values
self._cb_luma_program = self.ctx.load_program(
vertex_shader=':resources:shaders/postprocessing/glow_filter_vs.glsl',
fragment_shader=':resources:shaders/postprocessing/glow_filter_fs.glsl'
vertex_shader=':system:shaders/postprocessing/glow_filter_vs.glsl',
fragment_shader=':system:shaders/postprocessing/glow_filter_fs.glsl'
)

# Program for combining the original buffer and the blurred buffer
self._combine_program = self.ctx.load_program(
vertex_shader=':resources:shaders/texture_default_projection_vs.glsl',
fragment_shader=':resources:shaders/postprocessing/gaussian_combine_fs.glsl'
vertex_shader=':system:shaders/texture_default_projection_vs.glsl',
fragment_shader=':system:shaders/postprocessing/gaussian_combine_fs.glsl'
)
self._quad_fs = geometry.quad_2d_fs()

Expand Down
Loading