Welcome, Guest.
Username: Password: Remember me

TOPIC: I want to fix what 3.1.0-3.1.1 dof detection issue

I want to fix what 3.1.0-3.1.1 dof detection issue 4 weeks 3 hours ago #1

In The Elder Scrolls Online, detection of DOF works properly under conditions.

case 1:
ReShade 3.1.0 or less

case 2:
Enable copy depth before clearing

In case 2, the frame of the depth buffer is delayed.
I want to solve this problem. But I do not have graphic knowledge.
If you are busy, I resolve it myself, so please tell me the mechanism that was changed.
The administrator has disabled public write access.

I want to fix what 3.1.0-3.1.1 dof detection issue 3 weeks 6 days ago #2

Cheers, crosire =)
The administrator has disabled public write access.

I want to fix what 3.1.0-3.1.1 dof detection issue 3 weeks 6 days ago #3

I had already discovered there. I know that there have many changes.
I recognized this (detection) problem at september, but I could not understand that graphic process, I started with the work to fix other issues.
Even now I have not understand that graphic process, so I asked a question.

and,
The problem between versions 3.1.0 and 3.1.1 is # 38, but do I should to track changes to newer versions?
#40 is for 3.2.0
#49 and #51 is for 3.4.0
The administrator has disabled public write access.

I want to fix what 3.1.0-3.1.1 dof detection issue 3 weeks 6 days ago #4

#38 is the important one, the rest more or less just adds new stuff without touching the existing much. I don't know how I'm supposed to explain how it works. Best way to try and understand is to read the pull request description and source code changes I guess.
Cheers, crosire =)
The administrator has disabled public write access.

I want to fix what 3.1.0-3.1.1 dof detection issue 3 weeks 6 days ago #5

I what said "mechanism" means what changed to A to B.
I did not said "please compare source code".
I want to know "Where did changes the processing seen from game?".

Seen from game, detection process was where moved there?
The administrator has disabled public write access.

I want to fix what 3.1.0-3.1.1 dof detection issue 3 weeks 6 days ago #6

As I wrote #38, I'll try to explain it a bit, perhaps that makes it more clear :) Before #38, reshade collected all draw calls to the set depth buffer on the immediate context. Per draw call there might be a different depth buffer active (or none at all). At the end of the frame, it checks which depth buffer had the most draw calls and whether it has the same dimensions as the frame buffer and picked that one as the depth buffer to pass to the reshade shaders. This worked/works OK if the game uses the immediate context for rendering only (i.e. single threaded rendering).

Nowadays games more and more use multiple render contexts for rendering (what DX11 calls deferred contexts). All draw calls to a deferred context are converted to command lists by the game and then executed on the immediate context, however which depth buffer is active at that point is unknown (as setting the buffer is part of the command list). So in the #38 pull request, I added code to track and count the drawcalls made on a deferred context as well and add them to the total # of drawcalls for a depth buffer, whether it was active on a deferred context or the immediate context.

This could lead to a different depth buffer being the one with the most draw calls. Especially in games with multi-threaded rendering (each thread renders to its own deferred context, hence the reason games use it), it made a big difference.

There was a problem tho: what if two depth buffers received the same # of draw calls? Or one which isn't the right one, received more drawcalls? My changes don't know that and sometimes made the wrong choice. The PRs following #38 added features to mitigate that, where it also allowed users to pick the right one so there was always a way to make sure the right depth buffer is picked.

HTH.
Last Edit: 3 weeks 6 days ago by OtisInf.
The administrator has disabled public write access.
The following user(s) said Thank You: Wicked Sick, seri14