WIP: Render fogs with one draw call per fog instead of re-drawing every surface inside#1888
Draft
slipher wants to merge 5 commits intoDaemonEngine:masterfrom
Draft
WIP: Render fogs with one draw call per fog instead of re-drawing every surface inside#1888slipher wants to merge 5 commits intoDaemonEngine:masterfrom
slipher wants to merge 5 commits intoDaemonEngine:masterfrom
Conversation
This cheat cvar controlled whether the Quake 3 fog shader is used (while leaving the ET global fog unaffected). Instead you can use r_noFog which toggles all fogs.
A shader with a name 58-63 chars long would fail to generate a depth pass shader due to a length check. Add some extra space in the name buffer so this can't happen.
When the viewer is inside a fog volume, render the fog with a single draw call instead of drawing a corresponding fog surface for every opaque surface. The fogGlobal GLSL shader is modified to use a vertex position so it can handle finite-sized fogs. Before: - Each opaque surface inside a fog volume is drawn a second time using the fog shader with GL_EQUAL depth test. - The underside of the fog plane is drawn with a normal depth test, to cover things outside the fog when the viewer is inside. After: - If the viewer is inside the fog, draw all inside faces of the fog brush, using the depth buffer to reduce the fog distance in the case that something is in front of the fog boundary. - If the viewer is outside the fog, do everything as before. For the moment this is only used when material system is disabled. Fixes seams at the edge of fog that appear when MSAA is enabled.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adapt the global fog shader to use a vertex position so it can draw finite-sized fogs. Right now it is only implemented for fogs that the viewer is inside of, but this is enough to fix the artifacts with MSAA as in #1480 (comment). Later I will update the PR with commits to draw fogs the viewer is outside of this way as well.