Skip to content

Commit

Permalink
TEST: updated tests for material and shader
Browse files Browse the repository at this point in the history
  • Loading branch information
m-agour committed Jan 22, 2025
1 parent 2538e38 commit b4156fe
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 1 deletion.
3 changes: 2 additions & 1 deletion fury/tests/test_material.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from PIL import Image
import numpy as np

from fury import material, window
Expand Down Expand Up @@ -44,6 +43,8 @@ def test_create_mesh_material():
assert mat.color_mode == "vertex"
assert mat.flat_shading is True



verts, faces = prim_sphere()

geo = buffer_to_geometry(
Expand Down
65 changes: 65 additions & 0 deletions fury/tests/test_shader.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import numpy as np
from pygfx import Mesh
from pygfx.renderers.wgpu import register_wgpu_render_function
from tests.renderers.test_shader_composer import LocalBaseShader

from fury.actor import sphere
from fury.io import load_wgsl
from fury.material import MeshBasicMaterial
from fury.shader import MeshBasicShader, MeshPhongShader


def test_shader():

class CustomBasicMaterial(MeshBasicMaterial):
def __init__(self, **kwargs):
super().__init__(**kwargs)

class CustomPhongMaterial(MeshBasicMaterial):
def __init__(self, **kwargs):
super().__init__(**kwargs)

register_wgpu_render_function(Mesh, CustomBasicMaterial)(MeshBasicShader)
register_wgpu_render_function(Mesh, CustomPhongMaterial)(MeshPhongShader)

try:
register_wgpu_render_function(Mesh, CustomBasicMaterial)(MeshBasicShader)
register_wgpu_render_function(Mesh, CustomPhongMaterial)(MeshPhongShader)
except ValueError:
...
else:
raise AssertionError("Shoudn't be able to register the same material twice.")

Check failure on line 31 in fury/tests/test_shader.py

View workflow job for this annotation

GitHub Actions / Check for spelling errors

Shoudn't ==> Shouldn't


def test_wgsl():

shader_code = load_wgsl("mesh.wgsl")

assert isinstance(shader_code, str)
assert "fn vs_main" in shader_code
assert "fn fs_main" in shader_code


class CustomShader(LocalBaseShader):
def __init__(self, **kwargs):
super().__init__(**kwargs)

def get_code(self):
return load_wgsl("mesh.wgsl")

actor = sphere(centers=np.array([[0, 0, 0]]), colors=np.array([[1, 0, 0]]))
kwargs = {
"blending_code": "placeholder",
"write_pick": True,
"indexer": None,
"used_uv": {"uv": None},
}
cs = MeshBasicShader(actor)


assert isinstance(cs.get_code(), str)

gen_sh_code = cs.generate_wgsl(**kwargs)
assert isinstance(gen_sh_code, str)

assert "placeholder" in gen_sh_code

0 comments on commit b4156fe

Please sign in to comment.