I've seen posts by Demon on Doom9 that have highlighted that Nvidia seems to have limited access to its framebuffer in order to promote shadowplay.
However, how is it that OBS has access to these features whereas Dxtory doesn't? I get there's probably a reason, but I'm genuinely curious how they got it to work then.
The reason I'm wondering is - I can't get 60fps recordings at 1080p lossless with lagarith in even an old game like Amnesia, despite having a GTX 1060 6gb. I get like 20-30 (GPU warning). However, with OBS and lossless NVENC, I can get 1080p60 easily. The PROBLEM is that I can't get lossless audio with OBS with NVENC, OBS is a pain to use, and I can't get full chroma without the video becoming a green mess.
If I could get access to this stuff in Dxtory, I would be able to do lossless recordings of HD 3d games. Right now I can basically only get good lossless footage from lower definition 2d games.
framebuffer access is not the same thing as the video encoding
framebuffer access = capture, but nvenc is the encoder which encodes the stuff.
Dxtory relies on external codecs (Lagarith, MagicYUV, UT Video,... what have you, these are 3rd party codecs) for the encoding, for the most part. IF there was a vfw codec that offloaded the encoding to nvenc, dxtory could use that.
edit: Amnesia is an opengl game, you could try fiddling with the dxtory options (like enabling "wait for available buffer", it helped a lot with dx9 games with the latest release).
Also, if you used nvenc in dxtory, that would be lossy.
The main reason why NVENC doesn't drop performance is that it uses NvFBC (fullscreen) or NvIFR (Windowed). I think there was some kind of restrictions to use it at least some time ago. I haven't checked it that has changes since. If developers can access that freely then that would improve the performance a lot. Another bonus for NvFBC would be the ability to capture driver FXAA for screenshots and video. It looks like it's possible to access it with NVIDIA Capture SDK using NVFBC_TO_SYS/NvIFRToSys.
I'd like to see built in FFMPEG support would be nice bypassing VFW codecs completely. VFW codecs and AVI container... Is a bit meh. It would be so nice to use mkv container, FLAC audio and lossless HEVC or AVC mode. As far as I know VFW is a mess so ditching (or providing alternative) it could make things a lot simpler.
Quote from: Tup3x on October 14, 2016, 11:09:28 PM
The main reason why NVENC doesn't drop performance is that it uses NvFBC (fullscreen) or NvIFR (Windowed).
NVENC has nothing to do with NvFBC or NvIFR. NVENC ist the encoder giving you AVC/HEVC material and is freely available, whereas frame capturing using NvFBC/NvIFR is access restricted by Nvidia.
NVENC can take some load off your CPU but it won't reduce the frame drop (if your CPU is strong enough to handle the encode on its own). OBS uses NVENC but not NvFBC/NvIFR.
Quote from: Tup3x on October 14, 2016, 11:09:28 PMIt would be so nice to use mkv container, FLAC audio and lossless HEVC or AVC mode. As far as I know VFW is a mess so ditching (or providing alternative) it could make things a lot simpler.
What exactly? Popular video editing programs don't even support lossless H.264 material. I think it'll bring more problems than it solves.
Quote from: Malix on October 14, 2016, 11:00:06 PM
framebuffer access is not the same thing as the video encoding
framebuffer access = capture, but nvenc is the encoder which encodes the stuff.
Dxtory relies on external codecs (Lagarith, MagicYUV, UT Video,... what have you, these are 3rd party codecs) for the encoding, for the most part. IF there was a vfw codec that offloaded the encoding to nvenc, dxtory could use that.
edit: Amnesia is an opengl game, you could try fiddling with the dxtory options (like enabling "wait for available buffer", it helped a lot with dx9 games with the latest release).
Also, if you used nvenc in dxtory, that would be lossy.
NVenc now has a lossless mode for the 9xx series and above.
Quote from: Kayten on October 14, 2016, 11:32:06 PM
Quote from: Tup3x on October 14, 2016, 11:09:28 PM
The main reason why NVENC doesn't drop performance is that it uses NvFBC (fullscreen) or NvIFR (Windowed).
NVENC has nothing to do with NvFBC or NvIFR. NVENC ist the encoder giving you AVC/HEVC material and is freely available, whereas frame capturing using NvFBC/NvIFR is access restricted by Nvidia.
NVENC can take some load off your CPU but it won't reduce the frame drop (if your CPU is strong enough to handle the encode on its own). OBS uses NVENC but not NvFBC/NvIFR.
Quote from: Tup3x on October 14, 2016, 11:09:28 PMIt would be so nice to use mkv container, FLAC audio and lossless HEVC or AVC mode. As far as I know VFW is a mess so ditching (or providing alternative) it could make things a lot simpler.
What exactly? Popular video editing programs don't even support lossless H.264 material. I think it'll bring more problems than it solves.
Considering that they the whole point of OBS is to capture stuff and encode it directly I assumed that they did use them. Though when I said NVENC I was actually talking about ShadowPlay.
That was just and example. The point was flexibility and the freedom to choose various formats. Besides, it work in VirtualDub with FFMPEG which is good enough for me.
Quote from: Horikawa Otane on October 14, 2016, 11:48:59 PMNVenc now has a lossless mode for the 9xx series and above.
And its a shame that Shadowplay doesnt offer what the card is able to do...
As long as 3rd party software cant use NVIFR / NVFBC and so still has to hook into the game engine you'll only lose the cpu usage by the encoding - which is not that much if you use already lossless encoding. The main performance drop comes from the hooking into the game engine.
http://forums.guru3d.com/showpost.php?p=4687310&postcount=61