Giter VIP home page Giter VIP logo

Comments (4)

darbyjohnston avatar darbyjohnston commented on June 16, 2024

Good point, checking the time should be sufficient. The layers are a relatively new addition and a bit WIP, so there are probably a number of areas that could benefit from optimization.

As a side note the compositing of the layers is very simple right now and there are probably lots of ways to break it (for example having multiple tracks with overlapping dissolves). It probably really needs a proper compositing DAG with intermediate buffers...

from tlrender.

meshula avatar meshula commented on June 16, 2024

Before jumping ahead to that, I'm building a tiny interface base class for Render so I can get things up and running in Metal, so let me sort that first :)

Wracking my brain on how to deal with OCIO at the moment. Hoping there's a LUT baker somewhere that I can use to precook the textures for the shader...

For the "should render" check, I suggest adding a helper to Frame along the lines of bool Frame::needsRerender(const Frame& previousFrame) so that the logic can be centrally consistent no matter what happens internally with layers and whatnot.

from tlrender.

darbyjohnston avatar darbyjohnston commented on June 16, 2024

Very cool!

Yeah, the OCIO support is going to be tricky, maybe even more so with OCIO v2. You may have seen in Render.cpp where OCIO can generate an arbitrary number of 3D and 1D textures that are then passed to the shader. I would imagine the textures are straightforward to import into Metal, the tricky part is the custom shader code that OCIO generates to use the shaders:

p.ocioShaderDesc = OCIO::GpuShaderDesc::CreateShaderDesc();
p.ocioShaderDesc->setLanguage(OCIO::GPU_LANGUAGE_GLSL_1_2);
p.ocioShaderDesc->setFunctionName("OCIODisplay");

It looks like there is an open OCIO issue for adding support for Metal shaders:
AcademySoftwareFoundation/OpenColorIO#907

There is ociobakelut, but it will come with a number of limitations:
https://opencolorio.readthedocs.io/en/latest/tutorials/baking_luts.html

That's a good suggestion for the helper function, I'll try adding it.

from tlrender.

darbyjohnston avatar darbyjohnston commented on June 16, 2024

I added a convenience function for comparing the time value of two frames and updated the tlrplay-glfw code to use it. Thanks for the suggestion!

from tlrender.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.