diff --git a/.github/workflows/submodule_check.yaml b/.github/workflows/submodule_check.yaml index 37ec14e2..b973c1e1 100644 --- a/.github/workflows/submodule_check.yaml +++ b/.github/workflows/submodule_check.yaml @@ -4,7 +4,7 @@ on: # lets check it when we push to master (we've just done something in android, its a good time to see about this) push: branches: - - master + - main schedule: # 8am UTC every day diff --git a/.rive_head b/.rive_head index bc08ac8f..cb604e1a 100644 --- a/.rive_head +++ b/.rive_head @@ -1 +1 @@ -08d65ca60f8246c2f1456cb6ed8a43b0c7de8100 +c7bb5eb5ae34e300171bc6e48e26216170b094c7 diff --git a/wasm/premake5.lua b/wasm/premake5.lua index 9ac2aefa..2a7ebbd2 100644 --- a/wasm/premake5.lua +++ b/wasm/premake5.lua @@ -66,7 +66,7 @@ filter({}) RIVE_RUNTIME_DIR = os.isdir('../../runtime') and '../../runtime' or './submodules/rive-runtime' dofile(RIVE_RUNTIME_DIR .. '/premake5_v2.lua') -RIVE_PLS_DIR = os.isdir('../../runtime/pls') and '../../runtime/pls' or './submodules/rive-runtime/pls' +RIVE_PLS_DIR = os.isdir('../../runtime/renderer') and '../../runtime/renderer' or './submodules/rive-runtime/renderer' if _OPTIONS['renderer'] == 'webgl2' then dofile(RIVE_PLS_DIR .. '/premake5_pls_renderer.lua') end diff --git a/wasm/src/bindings_webgl2.cpp b/wasm/src/bindings_webgl2.cpp index e798bdaa..43bd7545 100644 --- a/wasm/src/bindings_webgl2.cpp +++ b/wasm/src/bindings_webgl2.cpp @@ -2,10 +2,10 @@ #ifdef RIVE_WEBGL2_RENDERER -#include "rive/pls/pls_image.hpp" -#include "rive/pls/gl/pls_render_context_gl_impl.hpp" -#include "rive/pls/pls_renderer.hpp" -#include "rive/pls/gl/pls_render_target_gl.hpp" +#include "rive/renderer/image.hpp" +#include "rive/renderer/gl/render_context_gl_impl.hpp" +#include "rive/renderer/rive_renderer.hpp" +#include "rive/renderer/gl/render_target_gl.hpp" #include "js_alignment.hpp" #include @@ -22,7 +22,7 @@ using namespace emscripten; #include using namespace rive; -using namespace rive::pls; +using namespace rive::gpu; class WebGL2Renderer; class WebGL2RenderImage; @@ -33,9 +33,9 @@ using PLSResourceID = uint64_t; static std::atomic s_nextWebGL2ImageID; static std::atomic s_nextWebGL2BufferID; -// Singleton PLSFactory implementation for WebGL 2. +// Singleton RiveRenderFactory implementation for WebGL 2. // All objects are context free and keyed to actual resources the the specific GL contexts. -class WebGL2Factory : public PLSFactory +class WebGL2Factory : public RiveRenderFactory { public: static WebGL2Factory* Instance() @@ -112,7 +112,7 @@ class ScopedGLContextMakeCurrent const EMSCRIPTEN_WEBGL_CONTEXT_HANDLE m_previousContext; }; -// Wraps a PLSImage that will be decoded in the future. +// Wraps an Image that will be decoded in the future. class PLSPromiseImage { public: @@ -137,12 +137,12 @@ class PLSPromiseImage m_plsImage.reset(); } - PLSImage* getPLSImage(const WebGL2Renderer*, const WebGL2RenderImage*); + Image* getImage(const WebGL2Renderer*, const WebGL2RenderImage*); private: const EMSCRIPTEN_WEBGL_CONTEXT_HANDLE m_contextGL; GLuint m_decodingTextureID = 0; - rcp m_plsImage; + rcp m_plsImage; PLSResourceID m_frameIDWhenValid = 0; }; @@ -224,13 +224,13 @@ class PLSSynchronizedBuffer PLSResourceID m_mutationID = 0; // Tells when we are out of sync with the WebGL2BufferData. }; -// Wraps a tightly coupled PLSRenderer and PLSRenderContext, which are tied to a specific WebGL2 +// Wraps a tightly coupled RiveRenderer and RenderContext, which are tied to a specific WebGL2 // context. -class WebGL2Renderer : public PLSRenderer +class WebGL2Renderer : public RiveRenderer { public: - WebGL2Renderer(std::unique_ptr plsContext, int width, int height) : - PLSRenderer(plsContext.get()), m_plsContext(std::move(plsContext)) + WebGL2Renderer(std::unique_ptr plsContext, int width, int height) : + RiveRenderer(plsContext.get()), m_plsContext(std::move(plsContext)) { resize(width, height); } @@ -248,9 +248,9 @@ class WebGL2Renderer : public PLSRenderer PLSResourceID currentFrameID() const { return m_currentFrameID; } - PLSRenderContextGLImpl* plsContextGL() const + RenderContextGLImpl* plsContextGL() const { - return m_plsContext->static_impl_cast(); + return m_plsContext->static_impl_cast(); } void resize(int width, int height) @@ -266,10 +266,10 @@ class WebGL2Renderer : public PLSRenderer // TODO: Give this a better name!! void clear() { - PLSRenderContext::FrameDescriptor frameDescriptor = { + RenderContext::FrameDescriptor frameDescriptor = { .renderTargetWidth = m_renderTarget->width(), .renderTargetHeight = m_renderTarget->height(), - .loadAction = pls::LoadAction::clear, + .loadAction = gpu::LoadAction::clear, .clearColor = 0, }; if (m_renderTarget->sampleCount() > 1) @@ -303,10 +303,10 @@ class WebGL2Renderer : public PLSRenderer void drawImage(const RenderImage* renderImage, BlendMode blendMode, float opacity) override { LITE_RTTI_CAST_OR_RETURN(webglRenderImage, const WebGL2RenderImage*, renderImage); - if (PLSImage* plsImage = getPLSImage(webglRenderImage)) + if (Image* plsImage = getImage(webglRenderImage)) { // The plsImage is done decoding. - PLSRenderer::drawImage(plsImage, blendMode, opacity); + RiveRenderer::drawImage(plsImage, blendMode, opacity); } } @@ -320,20 +320,20 @@ class WebGL2Renderer : public PLSRenderer float opacity) override { LITE_RTTI_CAST_OR_RETURN(webglRenderImage, const WebGL2RenderImage*, renderImage); - if (PLSImage* plsImage = getPLSImage(webglRenderImage)) + if (Image* plsImage = getImage(webglRenderImage)) { // The plsImage is done decoding. LITE_RTTI_CAST_OR_RETURN(vertexBuffer, WebGL2RenderBuffer*, vertices_f32.get()); LITE_RTTI_CAST_OR_RETURN(uvBuffer, WebGL2RenderBuffer*, uvCoords_f32.get()); LITE_RTTI_CAST_OR_RETURN(indexBuffer, WebGL2RenderBuffer*, indices_u16.get()); - PLSRenderer::drawImageMesh(plsImage, - refPLSBuffer(vertexBuffer), - refPLSBuffer(uvBuffer), - refPLSBuffer(indexBuffer), - vertexCount, - indexCount, - blendMode, - opacity); + RiveRenderer::drawImageMesh(plsImage, + refPLSBuffer(vertexBuffer), + refPLSBuffer(uvBuffer), + refPLSBuffer(indexBuffer), + vertexCount, + indexCount, + blendMode, + opacity); } } @@ -356,11 +356,11 @@ class WebGL2Renderer : public PLSRenderer } private: - PLSImage* getPLSImage(const WebGL2RenderImage* webglImage) + Image* getImage(const WebGL2RenderImage* webglImage) { PLSPromiseImage& promiseImage = m_plsPromiseImages.try_emplace(webglImage->uniqueID(), this, webglImage).first->second; - return promiseImage.getPLSImage(this, webglImage); + return promiseImage.getImage(this, webglImage); } rcp refPLSBuffer(WebGL2RenderBuffer* wglBuff) @@ -372,7 +372,7 @@ class WebGL2Renderer : public PLSRenderer const EMSCRIPTEN_WEBGL_CONTEXT_HANDLE m_contextGL = emscripten_webgl_get_current_context(); - std::unique_ptr m_plsContext; + std::unique_ptr m_plsContext; rcp m_renderTarget; std::map m_plsPromiseImages; @@ -430,8 +430,8 @@ PLSPromiseImage::PLSPromiseImage(const WebGL2Renderer* webglRenderer, } } -PLSImage* PLSPromiseImage::getPLSImage(const WebGL2Renderer* webglRenderer, - const WebGL2RenderImage* webglRenderImage) +Image* PLSPromiseImage::getImage(const WebGL2Renderer* webglRenderer, + const WebGL2RenderImage* webglRenderImage) { assert(emscripten_webgl_get_current_context() == m_contextGL); if (m_plsImage == nullptr) // Is the image not yet decoded? @@ -449,7 +449,7 @@ PLSImage* PLSPromiseImage::getPLSImage(const WebGL2Renderer* webglRenderer, glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - m_plsImage = make_rcp(webglRenderer->plsContextGL()->adoptImageTexture( + m_plsImage = make_rcp(webglRenderer->plsContextGL()->adoptImageTexture( texture_image_width(m_decodingTextureID), texture_image_height(m_decodingTextureID), m_decodingTextureID)); @@ -515,7 +515,7 @@ Factory* jsFactory() { return WebGL2Factory::Instance(); } WebGL2Renderer* makeWebGL2Renderer(int width, int height) { - if (auto plsContext = PLSRenderContextGLImpl::MakeContext()) + if (auto plsContext = RenderContextGLImpl::MakeContext()) { return new WebGL2Renderer(std::move(plsContext), width, height); } diff --git a/wasm/submodules/rive-runtime b/wasm/submodules/rive-runtime index 14d13c3d..0d2d40ca 160000 --- a/wasm/submodules/rive-runtime +++ b/wasm/submodules/rive-runtime @@ -1 +1 @@ -Subproject commit 14d13c3ded7b141d5130c0246901008dc070c9fe +Subproject commit 0d2d40ca8e0f6efe1f68f930ed6cfaab66a37439