Comments (4)
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.
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.
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.
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)
- Add support for saving all layers of an OpenEXR HOT 2
- [tlBake] -ffp option causes error HOT 2
- When .otio file contains a segment of an audio clip that does not start at 0, the audio plays too far into the next clip. HOT 1
- .otioz files are playing and showing without audio in latest edit branch. HOT 2
- Qt version does not display video HOT 2
- Zooming via trackpad does not work HOT 2
- Menu icons are barely visible in light mode (macOS) HOT 1
- Compare Wipe Mode is broken in edit branch HOT 1
- Add an option CmdLine.cpp and IApp.cpp to leave unparsed values in an array. HOT 1
- Bad sequence detection. HOT 2
- Add a std::future/std::promise to send I/O options to tlIO HOT 3
- Add an option to clear a single frame or frame range from the cache
- Sequence detection is failing on padded frames. HOT 1
- Caching does not begin from the current frame when refreshing cache. HOT 6
- Can glfw3 be compiled with both wayland and x11 support? HOT 4
- Image Sequences are played at trimmed (source_range?) rate instead of ImageSequence's rate() value.
- tlplay-gl.sh HEAD on Linux and mrv2 on Linux and Windows have issues memory spikes playing the current 4K mp4 movie
- tlRender build fails on osx - ZLIB_VERNUM != PNG_ZLIB_VERNUM HOT 1
- Shader Clamping in imageFragmentSource() HOT 1
- RtAudio tlRender audio enhancements HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tlrender.