Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pipeline refactor #42

Open
petiaccja opened this issue Jul 8, 2018 · 2 comments
Open

Pipeline refactor #42

petiaccja opened this issue Jul 8, 2018 · 2 comments
Assignees
Labels

Comments

@petiaccja
Copy link
Owner

petiaccja commented Jul 8, 2018

Refactors

DepthReduction + DepthReductionFinal + CSM: nobody else uses intermediate results of these nodes, merge them into a single node.

ForwardRender: waaaay too big and too many inputs, consolidate into fewer, more descriptive inputs. I.e. forward render could get shadow multiplier texture instead of all CSM bullshit. Consolidate CSM bullshit into one struct or one texture input, whichever easier. Make inputs optional: forward render should work without CSM & SS shadows. Pass through depth map, and make input depth prepass optional.

Voxelization: waaaaay to big, bloated, and breaks single responsibility. Break apart into Voxelization (produces voxels from scene, input: scene, camera; output: volume texture), VoxelGI (inputs: voxels, maybe scene, output: illumination voxel field or screen space texture), CombineLighting (inputs: gi texture, ssr texture, ssao texture, fw render out, etc.; output: proper lighting).

DofPrepare, DofTileMax, DofNeighborMax, DofMain: nobody else uses intermediate results (and ever will), merge them into a single node.

HDR:

  • BloomDownsample: replace with generic downsample filter bank (input: texture, factor, repeatCount; output: vector of downsampled textures)
  • LuminanceReduction & LuminanceReductionFinal: merge into one node (SceneLuminance)
  • BloomBlur & BloomAdd filter bank: merge into one node (Bloom)
  • LensFlare & BloomBlur & BloomBlur: merge into one node (LensFlare)
  • HDRCombine: delete this node
  • ToneMapper: inputs: hdr texture, parameters (i.e. luminance key); output: tone mapped image
  • ToneMapper gets its hdr input texture by adding (bloom + lensFlare + normalImage) into one single texture

GetEnvVariable: nodes should NOT use GetEnvVariable to receive images and lookup tables from outside which can in no meaningful way be altered by the user. I.e. SMAA lookup tables can never be altered, they are part of the algorithm.

  • SMAA
  • HDRCombine (suspected)
  • LensFlare (not an issue): lens flare texture is a valid use case, but should be optional
    Load textures from header files directly inside the node.

Debug draw

Debug draw must be implemented properly. I.e. graphics engine makes a scene available to all nodes, where they can put debug objects, and draws it automatically at the end of the frame. Current thing is a huge mess.

Methods

Code shared between different nodes
Factor such code out into its own class, and use that class inside multiple nodes.

@Yours3lf
Copy link
Collaborator

Yours3lf commented Aug 5, 2018

create node for visualizing voxel tex

@Yours3lf
Copy link
Collaborator

Yours3lf commented Aug 5, 2018

merge motion blur nodes
(motion blur, neighbormax, tilemax)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants