diff --git a/thermion_dart/test/geometry_tests.dart b/thermion_dart/test/geometry_tests.dart index 77d45009..7bfdbfb9 100644 --- a/thermion_dart/test/geometry_tests.dart +++ b/thermion_dart/test/geometry_tests.dart @@ -13,6 +13,13 @@ import 'helpers.dart'; void main() async { final testHelper = TestHelper("geometry"); group("custom geometry", () { + test('create cube with normals & uvs', () async { + var viewer = await testHelper.createViewer(); + await viewer + .createGeometry(GeometryHelper.cube(normals: true, uvs: true)); + await testHelper.capture(viewer, "geometry_cube_with_normals_uvs"); + }); + test('create cube (no normals/uvs)', () async { await testHelper.withViewer((viewer) async { var viewMatrix = @@ -41,13 +48,6 @@ void main() async { }); }); - test('create cube (with normals)', () async { - var viewer = await testHelper.createViewer(); - await viewer - .createGeometry(GeometryHelper.cube(normals: true, uvs: false)); - await testHelper.capture(viewer, "geometry_cube_with_normals"); - }); - test('create cube with lit ubershader material (normals/ no uvs)', () async { await testHelper.withViewer((viewer) async { @@ -91,24 +91,24 @@ void main() async { }); }); - // test('create instance (shared material)', () async { - // await testHelper.withViewer((viewer) async { - // final materialInstance = await viewer.createUnlitMaterialInstance(); - // await materialInstance.setParameterFloat4( - // "baseColorFactor", 1.0, 0.0, 0.0, 1.0); - // final cube = await viewer.createGeometry( - // GeometryHelper.cube(normals: true, uvs: false), - // materialInstances: [materialInstance]); + test('create instance (shared material)', () async { + await testHelper.withViewer((viewer) async { + final materialInstance = await viewer.createUnlitMaterialInstance(); + await materialInstance.setParameterFloat4( + "baseColorFactor", 1.0, 0.0, 0.0, 1.0); + final cube = await viewer.createGeometry( + GeometryHelper.cube(normals: true, uvs: false), + materialInstances: [materialInstance]); - // final instance = await viewer - // .createInstance(cube, materialInstances: [materialInstance]); - // await viewer.setTransform( - // instance.entity, Matrix4.translation(Vector3.all(1))); + final instance = await cube.createInstance(); + await instance.addToScene(); + await viewer.setTransform( + instance.entity, Matrix4.translation(Vector3.all(1))); - // await testHelper.capture( - // viewer, "geometry_instanced_with_shared_material_instance"); - // }); - // }); + await testHelper.capture( + viewer, "geometry_instanced_with_shared_material"); + }); + }); // test('create instance (no material on second instance)', () async { // await testHelper.withViewer((viewer) async { @@ -151,8 +151,7 @@ void main() async { // }); // }); - test('create cube with custom ubershader material instance (color)', - () async { + test('create cube with custom ubershader material (color)', () async { await testHelper.withViewer((viewer) async { await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); await viewer.setCameraPosition(0, 2, 6); diff --git a/thermion_dart/test/gltf_tests.dart b/thermion_dart/test/gltf_tests.dart index 6afb533c..e3566b57 100644 --- a/thermion_dart/test/gltf_tests.dart +++ b/thermion_dart/test/gltf_tests.dart @@ -43,11 +43,13 @@ void main() async { await viewer.destroyAsset(instance); - await testHelper.capture(viewer, "load_glb_from_buffer_instance_removed"); + await testHelper.capture( + viewer, "load_glb_from_buffer_instance_removed"); await viewer.destroyAsset(model); - await testHelper.capture(viewer, "load_glb_from_buffer_original_removed"); + await testHelper.capture( + viewer, "load_glb_from_buffer_original_removed"); }, bg: kRed); }); @@ -115,7 +117,7 @@ void main() async { }); }); - test('replace material instance for gltf', () async { + test('replace material instance with unlit material', () async { await testHelper.withViewer((viewer) async { var model = await viewer .loadGlb("file://${testHelper.testDir}/assets/cube.glb"); @@ -124,10 +126,28 @@ void main() async { await materialInstance.setParameterFloat4( "baseColorFactor", 1.0, 1.0, 0.0, 1.0); await model.setMaterialInstanceAt(materialInstance); - await testHelper.capture(viewer, "gltf_set_material_instance"); + await testHelper.capture( + viewer, "gltf_replace_material_instance_unlit"); await viewer.destroyAsset(model); await viewer.destroyMaterialInstance(materialInstance); }); }); + + test('replace material instance with ubershader material', () async { + await testHelper.withViewer((viewer) async { + var model = await viewer + .loadGlb("file://${testHelper.testDir}/assets/cube.glb"); + await viewer + .loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx"); + var materialInstance = await viewer.createUbershaderMaterialInstance(); + await materialInstance.setParameterFloat4( + "baseColorFactor", 1.0, 1.0, 0.0, 1.0); + await model.setMaterialInstanceAt(materialInstance); + await testHelper.capture( + viewer, "gltf_replace_material_instance_ubershader"); + await viewer.destroyAsset(model); + await viewer.destroyMaterialInstance(materialInstance); + }, bg: kRed); + }); }); } diff --git a/thermion_dart/test/material_tests.dart b/thermion_dart/test/material_tests.dart index ececd7b5..87fad056 100644 --- a/thermion_dart/test/material_tests.dart +++ b/thermion_dart/test/material_tests.dart @@ -104,6 +104,23 @@ void main() async { await viewer.dispose(); }); + test('ubershader material with color only', () async { + await testHelper.withViewer((viewer) async { + var materialInstance = await viewer.createUbershaderMaterialInstance(); + await viewer + .loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx"); + var cube = await viewer.createGeometry( + GeometryHelper.cube(normals: true, uvs: true), + materialInstances: [materialInstance]); + + await materialInstance.setParameterFloat4( + "baseColorFactor", 0.0, 1.0, 0.0, 1.0); + await materialInstance.setParameterInt("baseColorIndex", -1); + await testHelper.capture(viewer, "ubershader_material_base_color"); + await viewer.destroyMaterialInstance(materialInstance); + }, bg: kRed, postProcessing: true); + }); + test('apply texture to custom ubershader material instance', () async { var viewer = await testHelper.createViewer(); await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1);