Posts: 3.526
Threads: 6
Joined: Dec 2013
gamma pre-pass. just another buzzword. and it does multipass. it just does that per pixel not per screen. all in one shader. one could even rewrite the shader generator and load multiple "pass" shaders and link them at runtime to just be one multipass pixel shader. it's just how it's done these days. retroarch is using the old style.
Posts: 923
Threads: 7
Joined: Jan 2012
Reputation:
47
Location: Argentina
05-25-2014, 10:46 PM
(This post was last modified: 05-25-2014, 10:47 PM by KrossX.)
Unless it has changed, the post processing implementation is a single pass. Passes, as in the execution of a shader program. Multiple passes, being the execution of multiple shader programs for the... effect? meh.
For example, a two pass gaussian blur would take n + n samples. In one pass, you do the horizontal blur and in another pass the vertical blur. In a single pass, you would do n x n samples for the same effect.
So you can consider it a single effect "blur", but one method uses a single pass or step and the other one uses two passes.
Posts: 923
Threads: 7
Joined: Jan 2012
Reputation:
47
Location: Argentina
Again, unless it has changed... nope. Just a single shader is loaded and applied on the final render.
Maybe you're confusing the "things the shader might be doing" as opposed to "how many shaders are being applied". It certainly gets confusing.
Posts: 3.526
Threads: 6
Joined: Dec 2013
what if it has gamma prepass. it's just a function that reads a color and modifies a color. for the pass and shader count and not pass confusion. let's do it more explicit. factually. textually. one can do it like this:
gamma prepass.fxc:
Code:
shader blah
color gammaprepass(){
more shaderblah
}
horizontal blur.fxc:
Code:
shader blah
color horizontalblur(){
more shaderblah
}
vertical blur.fxc:
Code:
shader blah
color verticalblur(){
more shaderblah
}
contrast.fxc:
Code:
shader blah
color contrast(){
more shaderblah
}
BUT... it is the exactly the same as gsdx's
fxshader.fxc:
Code:
shader blah
color gammaprepass(){
more shaderblah
}
color vericalblur(){
more shaderblah
}
color horizontalblur(){
more shaderblah
}
color contrast(){
more shaderblah
}
color fxshader(){
gammaprepass();
horizontalblur();
verticalblur();
contrast();
}
just now it's one big shader instead the smaller ones. it still does all the passes aka that functions. you GET IT NOW ?!?