test: add more tests

This commit is contained in:
Nick Fisher
2025-01-07 08:42:24 +08:00
parent 3e74c8faea
commit 3a231697e5
3 changed files with 65 additions and 29 deletions

View File

@@ -13,6 +13,13 @@ import 'helpers.dart';
void main() async { void main() async {
final testHelper = TestHelper("geometry"); final testHelper = TestHelper("geometry");
group("custom 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 { test('create cube (no normals/uvs)', () async {
await testHelper.withViewer((viewer) async { await testHelper.withViewer((viewer) async {
var viewMatrix = 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)', test('create cube with lit ubershader material (normals/ no uvs)',
() async { () async {
await testHelper.withViewer((viewer) async { await testHelper.withViewer((viewer) async {
@@ -91,24 +91,24 @@ void main() async {
}); });
}); });
// test('create instance (shared material)', () async { test('create instance (shared material)', () async {
// await testHelper.withViewer((viewer) async { await testHelper.withViewer((viewer) async {
// final materialInstance = await viewer.createUnlitMaterialInstance(); final materialInstance = await viewer.createUnlitMaterialInstance();
// await materialInstance.setParameterFloat4( await materialInstance.setParameterFloat4(
// "baseColorFactor", 1.0, 0.0, 0.0, 1.0); "baseColorFactor", 1.0, 0.0, 0.0, 1.0);
// final cube = await viewer.createGeometry( final cube = await viewer.createGeometry(
// GeometryHelper.cube(normals: true, uvs: false), GeometryHelper.cube(normals: true, uvs: false),
// materialInstances: [materialInstance]); materialInstances: [materialInstance]);
// final instance = await viewer final instance = await cube.createInstance();
// .createInstance(cube, materialInstances: [materialInstance]); await instance.addToScene();
// await viewer.setTransform( await viewer.setTransform(
// instance.entity, Matrix4.translation(Vector3.all(1))); instance.entity, Matrix4.translation(Vector3.all(1)));
// await testHelper.capture( await testHelper.capture(
// viewer, "geometry_instanced_with_shared_material_instance"); viewer, "geometry_instanced_with_shared_material");
// }); });
// }); });
// test('create instance (no material on second instance)', () async { // test('create instance (no material on second instance)', () async {
// await testHelper.withViewer((viewer) async { // await testHelper.withViewer((viewer) async {
@@ -151,8 +151,7 @@ void main() async {
// }); // });
// }); // });
test('create cube with custom ubershader material instance (color)', test('create cube with custom ubershader material (color)', () async {
() async {
await testHelper.withViewer((viewer) async { await testHelper.withViewer((viewer) async {
await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1);
await viewer.setCameraPosition(0, 2, 6); await viewer.setCameraPosition(0, 2, 6);

View File

@@ -43,11 +43,13 @@ void main() async {
await viewer.destroyAsset(instance); 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 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); }, 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 { await testHelper.withViewer((viewer) async {
var model = await viewer var model = await viewer
.loadGlb("file://${testHelper.testDir}/assets/cube.glb"); .loadGlb("file://${testHelper.testDir}/assets/cube.glb");
@@ -124,10 +126,28 @@ void main() async {
await materialInstance.setParameterFloat4( await materialInstance.setParameterFloat4(
"baseColorFactor", 1.0, 1.0, 0.0, 1.0); "baseColorFactor", 1.0, 1.0, 0.0, 1.0);
await model.setMaterialInstanceAt(materialInstance); 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.destroyAsset(model);
await viewer.destroyMaterialInstance(materialInstance); 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);
});
}); });
} }

View File

@@ -104,6 +104,23 @@ void main() async {
await viewer.dispose(); 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 { test('apply texture to custom ubershader material instance', () async {
var viewer = await testHelper.createViewer(); var viewer = await testHelper.createViewer();
await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1); await viewer.addLight(LightType.SUN, 6500, 1000000, 0, 0, 0, 0, 0, -1);