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. Domains: forum.doom9.org / forum.doom9.net / forum.doom9.se |
|
|
#24521 | Link | |
|
Registered User
Join Date: May 2012
Posts: 447
|
Quote:
Edit: I guess it makes sense that the 3DLUT should apply the Rec.709-to-whatever-the-display-gamma-is conversion. You could probably get a good approximation by just taking the 256 points in the 3DLUT where R=G=B, then inverting that for conversion to Rec.709 (then from Rec.709 to linear RGB). Store that as a lookup table and use it during dithering (again probably too complicated to bother, but still).
__________________
Test patterns: Grayscale yuv444p16le perceptually spaced gradient v2.1 (8-bit version), Multicolor yuv444p16le perceptually spaced gradient v2.1 (8-bit version) Last edited by Ver Greeneyes; 8th March 2014 at 17:49. |
|
|
|
|
|
|
#24522 | Link |
|
Registered User
Join Date: Dec 2013
Posts: 753
|
I have no doubt that what you observed actually happened, it happens on my screen as well. But at this point I don't know if it also happens when the output is 8 bit and if it is merely a coincidence that it seems to 'correct' the gamma curve or if this is always the case.
|
|
|
|
|
|
#24523 | Link | ||||||||||||||||||||||
|
Registered Developer
Join Date: Sep 2006
Posts: 9,140
|
Quote:
Quote:
![]() How about the new test build (see bottom of this post)? Does the problem still occur with that build? Quote:
Interesting! I like 64/32 and 128/32. Looks like going with 16 neurons for the quadrupling pass doesn't help much over using 32 neurons. However, this is with the 290X. With a slower GPU it might be different... Quote:
Quote:
Quote:
![]() Quote:
![]() Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
![]() Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
------- Here's a new test build: http://madshi.net/madVRlinearLightDither2.rar Changes: (1) Added support for 1bit and 2bit display bitdepth. (2) There's now a "trade quality for performance" option to turn off linear light dithering. (3) Fix for this serious dithering bug: http://bugs.madshi.net/view.php?id=175 (4) JFYI: Random dithering and "None" don't cut down the bitdepth, anymore, to maximize real world image quality. Which means you can't directly compare those to ordered dithering or error diffusion in lower bitdepths, anymore. For those who doubt that linear light dithering is a good idea, switch the display to 4bit, display the following test image and then switch the new "trade quality for performance" option on/off: http://www.lagom.nl/lcd-test/img/gradient-h.png |
||||||||||||||||||||||
|
|
|
|
|
#24524 | Link |
|
Registered User
Join Date: Apr 2009
Posts: 1,019
|
I would suggest using 1/0.45 if none of the calibration options are being used in madVR.
If "this display is already calibrated..." is selected, I would use whichever gamma value is specified there. If a 3DLUT is being used for calibration, I would assume people are calibrating to BT.1886, which becomes a flat 2.40 gamma on a high contrast display. The majority of what I watch in madVR is film, and that's all mastered for 2.40 gamma. 2.22 is for graphics work, not film viewing. And if you're using a display calibrated for graphics work (2.20 gamma) and transforming that to 2.40 using the "color & gamma" options, would the dither use 2.40 or 2.20? |
|
|
|
|
|
#24525 | Link | |
|
Registered User
Join Date: May 2012
Posts: 447
|
Quote:
One thing you could do is to build a lookup table when a 3DLUT is selected for use: 1) For n equidistantly spaced colors on the neutral axis (i.e. RGB(0.0,0.0,0.0) to RGB(1.0,1.0,1.0)), look up the corresponding color by applying the Rec.709 transfer function, then applying the 3DLUT. The resulting colors won't be equidistantly spaced. 2) Linearly interpolate the output colors to get a set of m equidistantly spaced output colors, and apply this linear interpolation to the input colors (so now the input colors won't be equidistantly spaced). That should give you a lookup table that allows you to transform from the post-3DLUT output to linear RGB. Of course the second step is just an approximation, but if you use enough points in the first step (e.g. n = 4096), the linear interpolation should be a fairly good approximation. Anyway, just something to consider for a rainy day really
__________________
Test patterns: Grayscale yuv444p16le perceptually spaced gradient v2.1 (8-bit version), Multicolor yuv444p16le perceptually spaced gradient v2.1 (8-bit version) |
|
|
|
|
|
|
#24526 | Link | |
|
Registered User
Join Date: Dec 2008
Posts: 496
|
Quote:
I'm not sure about the quoted change though and I have at least 2 questions about this change. (1) Can you clarify what you mean with 'not cut down the bit depth'? If I understand you correctly, both 'none ' and 'random dithering' will simply ignore the display properties bit depth setting? However, if they don't adhere to the display properties anymore, what actual bit depth are they working in in that case? (2) If the madVR user base wants to effectively compare random dithering to the more correct ordered dithered and ED variants, no one can do valid comparisons, anymore, because when you're on an 8bit display, it's almost impossible to see actual differences, which would mean that this would mislead people into thinking that random dithering is 'just fine' and provides the same level of an accurate representation as do ordered dithering or the ED variants, when instead this is not the case, because people usually don't know what too look for. The same is true for 'none'. If a user selects 'none' and doesn´t run an 8bit panel, he is being mislead into thinking that 'none' looks better, just because it doesn´t adhere to the bit depth setting anymore, while ordered dithering and ED dithering does. IMHO this doesn´t make any sense and is also harmful, because while you´re intention may have been to improve image quality, for less knowledgable users, suddenly 'None' will do just fine and thus you´re effectively lowering image quality. I also loved being able to directly see how much information is lost at the selected display bit depth, when you´re choosing 'None'. And I also used that as a comparison baseline for some things. Now what is left is that we can only compare ordered dithering and the ED variants. I really hope this change doesn´t stay. I am particularly interested in your answer to (1), though, because that would give further implications and lead to further questions. Last edited by iSunrise; 8th March 2014 at 21:06. |
|
|
|
|
|
|
#24527 | Link | |
|
Registered User
Join Date: Dec 2013
Posts: 753
|
Quote:
|
|
|
|
|
|
|
#24528 | Link | |||
|
Registered User
Join Date: Dec 2008
Posts: 496
|
Quote:
Quote:
Quote:
Last edited by iSunrise; 8th March 2014 at 19:14. |
|||
|
|
|
|
|
#24529 | Link | |
|
Registered User
Join Date: Apr 2009
Posts: 1,019
|
Quote:
Edit: or to add another preference to manually specify what the display is calibrated to. The safest choice you could make, is to assume that people using an advanced feature like 3DLUTs are calibrating their displays to the proper spec for watching films. |
|
|
|
|
|
|
#24530 | Link | |||
|
Registered User
Join Date: Sep 2013
Posts: 919
|
madshi,
Thank you for the new build, with the ability to satisfy all the crowd and their crazy wishes. Quote:
![]() This was very useful. Quote:
I'm not saying that LL bad in any way, it does its job very good for Static dithering, It makes 4-bit look almost exactly like 8-bit. But when Dynamic dithering is activated which I use, the image becomes darker compared to 8-bit. I'm saying the 1/0.45 gamma fits Static dithering just right, but not Dynamic. For dynamic the gamma should be higher to make 4-bit Dynamic look like 8-bit. A better pattern to compare the LL vs GL & bitdepth is the Greyscale Ramp from AVS709HD because its a 24fps video file and not a static image. Looking at this pattern you can clearly see that a LOT of the blacks are crushed in 4-bit LL Dynamic mode. But in 4-bit LL Static looks as good as 8-bit. Allowing the possibility to change this gamma value (free value like 1.52) in the Dithering options (or registry) will be ideal. As I understand its 1/0.45 (2.22) hard coded now. BTW the "display bitdepth - toggle" goes to endless negative (-1, -2, etc...) bit values. Thanks. Quote:
No BT.1886 or BT.709 curves here. I wound not like to know that madVR enforces some funky "proper spec" curve on my video experience. Keep it as transparent as possible please.
__________________
System: i7 3770K, GTX660, Win7 64bit, Panasonic ST60, Dell U2410. Last edited by James Freeman; 8th March 2014 at 19:38. |
|||
|
|
|
|
|
#24531 | Link | |
|
Registered User
Join Date: Dec 2008
Posts: 496
|
Quote:
But you're more knowledgeable than me in that area. I just don't think that assuming something, because in an optimal (but theoretical case) it should be like this all the time, for everyone. Even for people that are using a 3DLUT. *Meaning, to really adhere to BT.1886, one would need a display that is capable of a very high, native, contrast ratio, for one. Last edited by iSunrise; 8th March 2014 at 19:26. |
|
|
|
|
|
|
#24532 | Link |
|
Registered Developer
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 10,416
|
2.40 gamma also assumes everyone has a absolute dark basement room for their movie watching.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders |
|
|
|
|
|
#24533 | Link | |
|
Registered User
Join Date: Dec 2008
Posts: 496
|
Quote:
![]() But in the case of 3DLUTs ONLY being used for a BT.1886/2.40 target seems a quite hefty assumption from a madVR standpoint to make, IMHO. madVR is not only used for movies that are being watched in a dark room. It is also used to watch PC/RGB content where you would optimally not have a target of BT.1886 if I understand the spec correctly, because that spec is only meant (1) for actual movie watching (2) on capable movie displays (3) in a dark room. But I'm just thinking out loud. Not even the newest Eizo CG monitors have a BT.1886 preset, while all more 'common' specs are supported (even DCI-P3). That could also have something to do with the inability of the displays to adhere to requirements of BT.1886, though. I haven´t really talked to the engineers about BT.1886, yet. I´m not seeing this here. Only '1bit' through '8bit (or higher)' can be selected. Last edited by iSunrise; 8th March 2014 at 20:13. |
|
|
|
|
|
|
#24534 | Link | |
|
Registered User
Join Date: Oct 2012
Posts: 103
|
Quote:
[EDIT] Please, make one. Include one or two other algorithms as well. Last edited by YxP; 8th March 2014 at 20:07. |
|
|
|
|
|
|
#24535 | Link |
|
Registered User
Join Date: Dec 2008
Posts: 496
|
Wow, the new 1bit and 2bit options really make a difference.
Went through some of my usual content examples quickly and ED11 really only dithers where it needs to, while with A4 there are very visible and extremely bright colored random dithering dots everywhere. Even in the black areas where there shouldn´t be any. This does not happen at all with ED11. This may not be directly transferable to higher bit depths, but it shows how the algorithms work when they are extremely bit depth starved. I feel like my strong preference for ED11 now is even more justified. It is extremely impressive how good the picture still looks when I'm at 1bit. Also, enabling the colored or dynamic option doesn´t improve the experience one bit for me, so I still highly prefer ED11 static. Thanks again for including them, madshi! Last edited by iSunrise; 8th March 2014 at 20:44. |
|
|
|
|
|
#24537 | Link | |
|
Registered User
Join Date: May 2012
Posts: 447
|
Quote:
Anyway, it honestly seems like too much work to bother unless madshi just feels like experimenting with it. I just wanted to work out how it could be done in theory.
__________________
Test patterns: Grayscale yuv444p16le perceptually spaced gradient v2.1 (8-bit version), Multicolor yuv444p16le perceptually spaced gradient v2.1 (8-bit version) Last edited by Ver Greeneyes; 8th March 2014 at 20:47. |
|
|
|
|
|
|
#24539 | Link | |||||
|
Registered Developer
Join Date: Sep 2006
Posts: 9,140
|
Quote:
I think what the test build does now, using a simple 1/0.45 pure power curve is a fair approximation of how most displays are calibrated out there. Some may be calibrated to 2.4, but then, 2.222 is much nearer to 2.4 than 1.0 is. Some may have a linear segment near black. Ok, that is a somewhat problematic, but I don't see an easy solution for that. I think what the test build does now should be better than doing no linear light dithering at all, agreed? So I'm tempted to keep it simple and leave linear light dithering at 1/0.45. The real world difference is very small, anyway, especially at 8bit. At 8bit I don't really see a difference between gamma and linear light dithering, at least on my computer monitor. So what sense does it make to worry about differences between e.g. 2.222 and 2.4? What we all need to remember is that all non-dithered shades (e.g. 256 grayscale steps in 8bit) are glued onto the correct spot on the display transfer function. We're only talking about how the dithering locally interpolates between all those glued on steps. So whatever transfer function we choose, we're not changing the overall transfer function at all, but we're just doing very local very small changes. Of course this only applies to "normal" bitdepths. If you go to 4bits or lower, the numbers of shades has gone so low that the dithering transfer function actually starts to define the overall look of the display transfer function. But remember, 4bits and lower is really only for testing, so we shouldn't worry about that too much. Quote:
Quote:
Edit: Ok, I guess I could revert this change and let "none" round to the specified display bitdepth again. After all, nobody in his right mind should configure madVR to do "none" in the first place, especially not if the display is configured to less than 8bit. However, random dithering is a different topic. The random dithering still does honor the display bitdepth setting. Meaning the amount of noise depends on the display bitdepth. However, madVR does this in 8bit, and leaves the rest to the display. So basically the display bitdepth just changes the amount of noise random dithering adds. Older madVR versions (prior to v0.87.5) behaved the same way. Only in v0.87.5-6 I artificially cut down the bitdepth to the specified display bitdepth, so comparisons would be fairer. But in the end the purpose of madVR is not to compare different algorithms, but to produce the best possible image quality. And there's no point artificially rounding random dithered content down to less than 8bit. It cannot improve image quality, it can only degrade it. Quote:
No, my comment was not specifically directed at you. Quote:
Last edited by madshi; 8th March 2014 at 21:13. |
|||||
|
|
|
|
|
#24540 | Link |
|
Registered User
Join Date: Sep 2011
Posts: 72
|
Say what is BT2020:
__________________
Win7x64 Core i7 920 3.5GHz Noctua NH-D14/ArcticCooling MX-3 6(3x2)GB Transcend 1426MHz RoyalHD (64MB)[Solo6c][JPLAY]/HD7850DC22GD5V2[EIZOT965] Seasonic X-750 VelociRaptor WD4500HLHX/16TB_STORE |
|
|
|
![]() |
| Tags |
| direct compute, dithering, error diffusion, madvr, ngu, nnedi3, quality, renderer, scaling, uhd upscaling, upsampling |
| Thread Tools | |
| Display Modes | |
|
|