From b271b7e433ab14ee54eeaee58f44c3c44cc8762e Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 17 Mar 2025 22:36:10 +0800 Subject: [PATCH] more render thread methods --- .../src/c_api/ThermionDartRenderThreadApi.cpp | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp index da80b10b..955f8e56 100644 --- a/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp +++ b/thermion_dart/native/src/c_api/ThermionDartRenderThreadApi.cpp @@ -404,26 +404,6 @@ extern "C" auto fut = _rl->add_task(lambda); } - EMSCRIPTEN_KEEPALIVE void Texture_buildRenderThread(TEngine *engine, - uint32_t width, - uint32_t height, - uint32_t depth, - uint8_t levels, - uint16_t tUsage, - intptr_t import, - TTextureSamplerType sampler, - TTextureFormat format, - void (*onComplete)(TTexture *)) - { - std::packaged_task lambda( - [=]() mutable - { - auto texture = Texture_build(engine, width, height, depth, levels, tUsage, import, sampler, format); - onComplete(texture); - }); - auto fut = _rl->add_task(lambda); - } - EMSCRIPTEN_KEEPALIVE void Engine_destroyTextureRenderThread(TEngine *engine, TTexture *tTexture, void (*onComplete)()) { std::packaged_task lambda( @@ -497,6 +477,16 @@ extern "C" auto fut = _rl->add_task(lambda); } + EMSCRIPTEN_KEEPALIVE void Engine_buildIndirectLightRenderThread(TEngine *tEngine, uint8_t *iblData, size_t length, float intensity, void (*onComplete)(TIndirectLight *), void (*onTextureUploadComplete)()) { + std::packaged_task lambda( + [=]() mutable + { + auto *indirectLight = Engine_buildIndirectLight(tEngine, iblData, length, intensity, onTextureUploadComplete); + onComplete(indirectLight); + }); + auto fut = _rl->add_task(lambda); + } + EMSCRIPTEN_KEEPALIVE void Renderer_beginFrameRenderThread(TRenderer *tRenderer, TSwapChain *tSwapChain, uint64_t frameTimeInNanos, void (*onComplete)(bool)) { std::packaged_task lambda( [=]() mutable @@ -1088,6 +1078,25 @@ extern "C" auto fut = _rl->add_task(lambda); } + EMSCRIPTEN_KEEPALIVE void Texture_buildRenderThread( + TEngine *tEngine, + uint32_t width, + uint32_t height, + uint32_t depth, + uint8_t levels, + uint16_t tUsage, + intptr_t import, + TTextureSamplerType sampler, + TTextureFormat format, void (*onComplete)(TTexture *)) { + std::packaged_task lambda( + [=]() mutable + { + auto *texture = Texture_build(tEngine, width, height, depth, levels, tUsage, import, sampler, format); + onComplete(texture); + }); + auto fut = _rl->add_task(lambda); + } + // Texture methods EMSCRIPTEN_KEEPALIVE void Texture_loadImageRenderThread(TEngine *tEngine, TTexture *tTexture, TLinearImage *tImage, TPixelDataFormat bufferFormat, TPixelDataType pixelDataType,