| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- from panda3d.core import Shader, VirtualFileSystem, Filename
- import time
- import pytest
- @pytest.fixture(scope="session")
- def vfs():
- return VirtualFileSystem.get_global_ptr()
- @pytest.fixture
- def ramdir():
- """Fixture yielding a fresh ramdisk directory."""
- from panda3d.core import VirtualFileMountRamdisk, Filename
- vfs = VirtualFileSystem.get_global_ptr()
- mount = VirtualFileMountRamdisk()
- dir = Filename.temporary("/virtual", "ram.")
- assert vfs.mount(mount, dir, 0)
- yield dir
- vfs.unmount(mount)
- def test_shader_load_multi(vfs, ramdir):
- # Try non-existent first.
- shad0 = Shader.load(Shader.SL_GLSL,
- vertex="/nonexistent.glsl",
- fragment="/nonexistent.glsl")
- assert shad0 is None
- vert_file = Filename(ramdir, "shader.glsl")
- frag_file = Filename(ramdir, "shader.glsl")
- # Now write some actual content to the shader files.
- vfs.write_file(vert_file, b"#version 100\nvoid main() {}\n", False)
- shad1 = Shader.load(Shader.SL_GLSL, vertex=vert_file, fragment=frag_file)
- assert shad1 is not None
- assert shad1.this
- # Load the same shader, it should return the cached result.
- shad2 = Shader.load(Shader.SL_GLSL, vertex=vert_file, fragment=frag_file)
- assert shad2 is not None
- assert shad1.this == shad2.this
- # After waiting a second to make the timestamp different, modify the
- # shader and load again, it should result in a different object now
- time.sleep(1.0)
- vfs.write_file(vert_file, b"#version 110\nvoid main() {}\n", False)
- shad2 = Shader.load(Shader.SL_GLSL, vertex=vert_file, fragment=frag_file)
- assert shad2.this != shad1.this
- def test_shader_load_compute(vfs, ramdir):
- # Try non-existent first.
- shad0 = Shader.load_compute(Shader.SL_GLSL, "/nonexistent.glsl")
- assert shad0 is None
- comp_file = Filename(ramdir, "shader.glsl")
- # Now write some actual content to the shader file.
- vfs.write_file(comp_file, b"#version 100\nvoid main() {}\n", False)
- shad1 = Shader.load_compute(Shader.SL_GLSL, comp_file)
- assert shad1 is not None
- assert shad1.this
- # Load the same shader, it should return the cached result.
- shad2 = Shader.load_compute(Shader.SL_GLSL, comp_file)
- assert shad2 is not None
- assert shad1.this == shad2.this
- # After waiting a second to make the timestamp different, modify the
- # shader and load again, it should result in a different object now
- time.sleep(1.0)
- vfs.write_file(comp_file, b"#version 110\nvoid main() {}\n", False)
- shad2 = Shader.load_compute(Shader.SL_GLSL, comp_file)
- assert shad2.this != shad1.this
|