Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|
Thread Tools | Search this Thread | Display Modes |
7th July 2023, 08:56 | #141 | Link |
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
|
Hi everyone,
as a little update, sekrit made a new commit here: https://github.com/sekrit-twc/timecu...4dfd3e75216741 in which he committed the manually written intrinsics in assembly for SSE4.1, AVX2 and AVX512, so that the new tetrahedral interpolation method is no longer limited to the slow C++ code only. I tested it on my Intel Xeon Gold 6238R and it seems to be working ok, but please test, 'cause the more feedback we can give him, the better. Here's the new build I made with sekrit's latest changes: vscube_07072023.zip just like before, inside the package you'll find the normal vscube_x86.dll and vscube_x64.dll compiled with v143 and of course the "special" v141_xp /Zc:threadSafeInit msvc compiled version called "_XP": - vscube_x86.dll - vscube_x64.dll - vscube_XP_x86.dll - vscube_XP_x64.dll It's still VapourSynth only, for now, but you can see the development of the thread here and that sekrit is willing to incorporate the Avisynth version into the main repository as soon as someone (perhaps Donald, who also commented on the thread) commits the latest changes required. Anyway, looks like we're finally getting somewhere. Please test and report back if you find any issues. |
7th July 2023, 12:25 | #143 | Link |
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
|
If you're talking to Donald, I'm not sure he regularly checks here, so it might take a while before he sees your post; I was under the impression that he was willing to do it just like the other versions, though, but I'm not him, so I don't know what his intentions are.
If you're talking to me, instead, well, if and only if no one is willing to do it, then I'll try to do it myself ('cause I don't wanna have two people doing the same thing twice xD). We'll see, but it would be better if everyone was here on Doom9 regularly, so that we didn't have to speculate |
8th July 2023, 22:04 | #145 | Link | |
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
|
You're correct. Donald just released an Avisynth test version: Link
I'll test it on Monday morning as soon as I get back to work and see if the results are consistent with the VapourSynth version. The new syntax accepts: Code:
interp: int, 0 = linear, 1 = tetrahedral By the way, this is applied to a real life football content to go from UHD XAVC Intra Class 300 50p BT2020 HLG 1000 nits to an FULL HD XDCAM-50 25i BT709 SDR 100 nits: Quote:
if tests go fine, I'll report back. Speaking of which, I hope he'll release the source code given that I'll compile the x86 version as well to include it in FFAStrans as I have to support both 64bit and 32bit users as always Last edited by FranceBB; 11th July 2023 at 16:18. |
|
9th July 2023, 00:15 | #146 | Link |
Registered User
Join Date: Jan 2018
Posts: 2,153
|
Latest DGCube
https://www.rationalqm.us/misc/?C=M;O=D |
11th July 2023, 17:01 | #147 | Link | |
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
|
Something doesn't feel right.
Quote:
What I don't understand is why Cube() tetrahedral and DGCube() tetrahedral are so much different. Souce: https://we.tl/t-xqG6XosULK Cube_Tetrahedral: https://we.tl/t-GLjsVvJ6Ad DGCube_Tetrahedral: https://we.tl/t-5L8KCVRfmg Cube_Trilinear: https://we.tl/t-iBhR03kbFP Last edited by FranceBB; 11th July 2023 at 17:09. |
|
11th July 2023, 17:09 | #148 | Link |
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
|
Also, DGCube with Tetrahedral is actually the one that gets it right.
In the Cube version, however, it looks like a bit of both versions is applied. You can see the ripples of the trilinear and also the smoothness of the tetrahedral. Why? Cube Trilinear (rightly showing ripples): DGCube Tetrahedral (no ripples, actually correct): Cube Tetrahedral (something in-between, NOT correct): Cube Tetrahedral is something in between...? O_O |
11th July 2023, 18:42 | #150 | Link |
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
|
@poisondeathray I found the culprit. It's the manually written assembly code for AVX2. I reported it back to both Donald and Sekrit.
The normal C++ code is actually correct. The SSE4.1 assembly code is also correct. The AVX2 assembly code is wrong. The AVX512 assembly code is correct. So it looks like there's something wrong only in the AVX2 code. |
14th July 2023, 08:45 | #151 | Link | ||||
Broadcast Encoder
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
|
new version by Donald and Sekrit for Avisynth with the AVX2 code fixed: Link
Quote:
Quote:
Trilinear vs Tetrahedral: Trilinear interpolation is used by default only for historical reasons. When Cube() was first developed it only had one interpolation method, namely trilinear. Although this was far from ideal as it can produce ripples, plenty of people used it (as they were using this function), therefore when tetrahedral was introduced it was agreed to leave trilinear as default to allow people to still obtain the same results when upgrading the version. However, in practice, tetrahedral should always be used and it's the suggested method. Source (left) - Trilinear (center) - Tetrahedral (right): As you can see, in the right hand side waveform (tetrahedral) there are no ripples, unlike the ones you can see in the trilinear interpolation at the center. Usage example: Example 1: Quote:
Example 2: Quote:
Last edited by FranceBB; 14th July 2023 at 08:48. |
||||
Tags |
3dl, cube, hdr, lut, sdr |
Thread Tools | Search this Thread |
Display Modes | |
|
|