(test) update helper to add createStencilBuffer flag
This commit is contained in:
@@ -121,11 +121,8 @@ class TestHelper {
|
|||||||
TextureUsage.TEXTURE_USAGE_BLIT_SRC
|
TextureUsage.TEXTURE_USAGE_BLIT_SRC
|
||||||
},
|
},
|
||||||
textureFormat: textureFormat);
|
textureFormat: textureFormat);
|
||||||
await view.setRenderTarget(await FilamentApp.instance!.createRenderTarget(
|
await view.setRenderTarget(await FilamentApp.instance!
|
||||||
512,
|
.createRenderTarget(512, 512, color: color) as FFIRenderTarget);
|
||||||
512,
|
|
||||||
color: color,
|
|
||||||
) as FFIRenderTarget);
|
|
||||||
|
|
||||||
await FilamentApp.instance!.register(swapChain, view);
|
await FilamentApp.instance!.register(swapChain, view);
|
||||||
|
|
||||||
@@ -152,7 +149,7 @@ class TestHelper {
|
|||||||
final cubeGeometry = GeometryHelper.cube(flipUvs: true);
|
final cubeGeometry = GeometryHelper.cube(flipUvs: true);
|
||||||
var asset = await viewer
|
var asset = await viewer
|
||||||
.createGeometry(cubeGeometry, materialInstances: [materialInstance]);
|
.createGeometry(cubeGeometry, materialInstances: [materialInstance]);
|
||||||
|
|
||||||
await fn(asset);
|
await fn(asset);
|
||||||
await viewer.destroyAsset(asset);
|
await viewer.destroyAsset(asset);
|
||||||
}
|
}
|
||||||
@@ -164,13 +161,15 @@ class TestHelper {
|
|||||||
{Future Function(View view)? beforeRender,
|
{Future Function(View view)? beforeRender,
|
||||||
SwapChain? swapChain,
|
SwapChain? swapChain,
|
||||||
PixelDataFormat pixelDataFormat = PixelDataFormat.RGBA,
|
PixelDataFormat pixelDataFormat = PixelDataFormat.RGBA,
|
||||||
PixelDataType pixelDataType = PixelDataType.FLOAT}) async {
|
PixelDataType pixelDataType = PixelDataType.FLOAT,
|
||||||
|
bool captureRenderTarget = false}) async {
|
||||||
swapChain ??= this.swapChain;
|
swapChain ??= this.swapChain;
|
||||||
var pixelBuffers = await FilamentApp.instance!.capture(swapChain,
|
var pixelBuffers = await FilamentApp.instance!.capture(swapChain,
|
||||||
view: view,
|
view: view,
|
||||||
beforeRender: beforeRender,
|
beforeRender: beforeRender,
|
||||||
pixelDataFormat: pixelDataFormat,
|
pixelDataFormat: pixelDataFormat,
|
||||||
pixelDataType: pixelDataType);
|
pixelDataType: pixelDataType,
|
||||||
|
captureRenderTarget: captureRenderTarget);
|
||||||
var retval = <View, Uint8List>{};
|
var retval = <View, Uint8List>{};
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (final (view, pixelBuffer) in pixelBuffers) {
|
for (final (view, pixelBuffer) in pixelBuffers) {
|
||||||
@@ -191,9 +190,10 @@ class TestHelper {
|
|||||||
///
|
///
|
||||||
///
|
///
|
||||||
Future<ThermionTextureSwift> createTexture(int width, int height,
|
Future<ThermionTextureSwift> createTexture(int width, int height,
|
||||||
{bool depth = false}) async {
|
{bool depth = false, bool stencil = false}) async {
|
||||||
final object = ThermionTextureSwift();
|
final object = ThermionTextureSwift();
|
||||||
object.initWithWidth_height_isDepth_(width, height, depth);
|
object.initWithWidth_height_isDepth_isStencil_(
|
||||||
|
width, height, depth, stencil);
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,7 +207,8 @@ class TestHelper {
|
|||||||
print(record);
|
print(record);
|
||||||
});
|
});
|
||||||
|
|
||||||
await FFIFilamentApp.create(config: FFIFilamentConfig(loadResource: _loadResource));
|
await FFIFilamentApp.create(
|
||||||
|
config: FFIFilamentConfig(loadResource: _loadResource));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future createViewer(
|
Future createViewer(
|
||||||
@@ -216,11 +217,13 @@ class TestHelper {
|
|||||||
({int width, int height}) viewportDimensions = (width: 512, height: 512),
|
({int width, int height}) viewportDimensions = (width: 512, height: 512),
|
||||||
bool postProcessing = false,
|
bool postProcessing = false,
|
||||||
bool addSkybox = false,
|
bool addSkybox = false,
|
||||||
bool createRenderTarget = false}) async {
|
bool createRenderTarget = false,
|
||||||
|
bool createStencilBuffer = false}) async {
|
||||||
cameraPosition ??= Vector3(0, 5, 5);
|
cameraPosition ??= Vector3(0, 5, 5);
|
||||||
|
|
||||||
swapChain = await FilamentApp.instance!.createHeadlessSwapChain(
|
swapChain = await FilamentApp.instance!.createHeadlessSwapChain(
|
||||||
viewportDimensions.width, viewportDimensions.height) as FFISwapChain;
|
viewportDimensions.width, viewportDimensions.height,
|
||||||
|
hasStencilBuffer: createStencilBuffer) as FFISwapChain;
|
||||||
|
|
||||||
FFIRenderTarget? renderTarget;
|
FFIRenderTarget? renderTarget;
|
||||||
if (createRenderTarget) {
|
if (createRenderTarget) {
|
||||||
@@ -240,15 +243,18 @@ class TestHelper {
|
|||||||
importedTextureHandle: metalColorTexture.metalTextureAddress);
|
importedTextureHandle: metalColorTexture.metalTextureAddress);
|
||||||
var width = await color.getWidth();
|
var width = await color.getWidth();
|
||||||
var height = await color.getHeight();
|
var height = await color.getHeight();
|
||||||
var depth = await FilamentApp.instance!
|
var depth = await FilamentApp.instance!.createTexture(
|
||||||
.createTexture(viewportDimensions.width, viewportDimensions.height,
|
viewportDimensions.width, viewportDimensions.height,
|
||||||
flags: {
|
flags: {
|
||||||
TextureUsage.TEXTURE_USAGE_BLIT_SRC,
|
TextureUsage.TEXTURE_USAGE_DEPTH_ATTACHMENT,
|
||||||
TextureUsage.TEXTURE_USAGE_DEPTH_ATTACHMENT,
|
TextureUsage.TEXTURE_USAGE_SAMPLEABLE,
|
||||||
TextureUsage.TEXTURE_USAGE_SAMPLEABLE,
|
if (createStencilBuffer)
|
||||||
},
|
TextureUsage.TEXTURE_USAGE_STENCIL_ATTACHMENT,
|
||||||
textureFormat: TextureFormat.DEPTH32F,
|
},
|
||||||
importedTextureHandle: metalDepthTexture.metalTextureAddress);
|
textureFormat: createStencilBuffer
|
||||||
|
? TextureFormat.DEPTH32F_STENCIL8
|
||||||
|
: TextureFormat.DEPTH32F,
|
||||||
|
importedTextureHandle: metalDepthTexture.metalTextureAddress);
|
||||||
|
|
||||||
renderTarget = await FilamentApp.instance!.createRenderTarget(
|
renderTarget = await FilamentApp.instance!.createRenderTarget(
|
||||||
viewportDimensions.width, viewportDimensions.height,
|
viewportDimensions.width, viewportDimensions.height,
|
||||||
@@ -265,6 +271,10 @@ class TestHelper {
|
|||||||
await viewer.view
|
await viewer.view
|
||||||
.setViewport(viewportDimensions.width, viewportDimensions.height);
|
.setViewport(viewportDimensions.width, viewportDimensions.height);
|
||||||
|
|
||||||
|
if (createStencilBuffer) {
|
||||||
|
await viewer.view.setStencilBufferEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (addSkybox) {
|
if (addSkybox) {
|
||||||
await viewer
|
await viewer
|
||||||
.loadSkybox("file://${testDir}/assets/default_env_skybox.ktx");
|
.loadSkybox("file://${testDir}/assets/default_env_skybox.ktx");
|
||||||
@@ -278,7 +288,10 @@ class TestHelper {
|
|||||||
final camera = await viewer.getActiveCamera();
|
final camera = await viewer.getActiveCamera();
|
||||||
|
|
||||||
await camera.setLensProjection(
|
await camera.setLensProjection(
|
||||||
near: kNear, far: kFar, aspect: viewportDimensions.width / viewportDimensions.height, focalLength: kFocalLength);
|
near: kNear,
|
||||||
|
far: kFar,
|
||||||
|
aspect: viewportDimensions.width / viewportDimensions.height,
|
||||||
|
focalLength: kFocalLength);
|
||||||
|
|
||||||
await camera.lookAt(cameraPosition);
|
await camera.lookAt(cameraPosition);
|
||||||
|
|
||||||
@@ -299,6 +312,7 @@ class TestHelper {
|
|||||||
bool postProcessing = false,
|
bool postProcessing = false,
|
||||||
bool addSkybox = false,
|
bool addSkybox = false,
|
||||||
bool createRenderTarget = false,
|
bool createRenderTarget = false,
|
||||||
|
bool createStencilBuffer = false,
|
||||||
}) async {
|
}) async {
|
||||||
final viewer = await createViewer(
|
final viewer = await createViewer(
|
||||||
bg: bg,
|
bg: bg,
|
||||||
@@ -306,7 +320,8 @@ class TestHelper {
|
|||||||
viewportDimensions: viewportDimensions,
|
viewportDimensions: viewportDimensions,
|
||||||
postProcessing: postProcessing,
|
postProcessing: postProcessing,
|
||||||
addSkybox: addSkybox,
|
addSkybox: addSkybox,
|
||||||
createRenderTarget: createRenderTarget);
|
createRenderTarget: createRenderTarget,
|
||||||
|
createStencilBuffer: createStencilBuffer);
|
||||||
await fn.call(viewer);
|
await fn.call(viewer);
|
||||||
await viewer.dispose();
|
await viewer.dispose();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user