Skip to content

Commit b4156fe

Browse files
committed
TEST: updated tests for material and shader
1 parent 2538e38 commit b4156fe

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

fury/tests/test_material.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from PIL import Image
21
import numpy as np
32

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

46+
47+
4748
verts, faces = prim_sphere()
4849

4950
geo = buffer_to_geometry(

fury/tests/test_shader.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import numpy as np
2+
from pygfx import Mesh
3+
from pygfx.renderers.wgpu import register_wgpu_render_function
4+
from tests.renderers.test_shader_composer import LocalBaseShader
5+
6+
from fury.actor import sphere
7+
from fury.io import load_wgsl
8+
from fury.material import MeshBasicMaterial
9+
from fury.shader import MeshBasicShader, MeshPhongShader
10+
11+
12+
def test_shader():
13+
14+
class CustomBasicMaterial(MeshBasicMaterial):
15+
def __init__(self, **kwargs):
16+
super().__init__(**kwargs)
17+
18+
class CustomPhongMaterial(MeshBasicMaterial):
19+
def __init__(self, **kwargs):
20+
super().__init__(**kwargs)
21+
22+
register_wgpu_render_function(Mesh, CustomBasicMaterial)(MeshBasicShader)
23+
register_wgpu_render_function(Mesh, CustomPhongMaterial)(MeshPhongShader)
24+
25+
try:
26+
register_wgpu_render_function(Mesh, CustomBasicMaterial)(MeshBasicShader)
27+
register_wgpu_render_function(Mesh, CustomPhongMaterial)(MeshPhongShader)
28+
except ValueError:
29+
...
30+
else:
31+
raise AssertionError("Shoudn't be able to register the same material twice.")
32+
33+
34+
def test_wgsl():
35+
36+
shader_code = load_wgsl("mesh.wgsl")
37+
38+
assert isinstance(shader_code, str)
39+
assert "fn vs_main" in shader_code
40+
assert "fn fs_main" in shader_code
41+
42+
43+
class CustomShader(LocalBaseShader):
44+
def __init__(self, **kwargs):
45+
super().__init__(**kwargs)
46+
47+
def get_code(self):
48+
return load_wgsl("mesh.wgsl")
49+
50+
actor = sphere(centers=np.array([[0, 0, 0]]), colors=np.array([[1, 0, 0]]))
51+
kwargs = {
52+
"blending_code": "placeholder",
53+
"write_pick": True,
54+
"indexer": None,
55+
"used_uv": {"uv": None},
56+
}
57+
cs = MeshBasicShader(actor)
58+
59+
60+
assert isinstance(cs.get_code(), str)
61+
62+
gen_sh_code = cs.generate_wgsl(**kwargs)
63+
assert isinstance(gen_sh_code, str)
64+
65+
assert "placeholder" in gen_sh_code

0 commit comments

Comments
 (0)