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 {
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);

View File

@@ -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);
});
});
}

View File

@@ -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);