You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current vignette functionality, despite being buried within a shader also doing other stuff, has actually a lot of potential. In its current form it's simply a transparency-only texture that appears as a darker halo framing the view. This is mostly used during the underwater rendering.
When extracted from the current shader and placed into its own VignetteNode, it can acquire new features without too much effort.
Possible enhancements
1st stage - Tinting
Reuse the current texture but add the capacity to arbitrarily change its color.
This will allow external objects controlling the node to arbitrarily vary its color in time, with the vignette halo taking a number of possible meanings:
flashing red: hit damage
orange: heat hazard
pale blue: cold hazard
pulsing yellow: disease
lime green: chemical hazard
turquoise blue: radioactive hazard
white: flashback/dream-like state
It should be noted that this achievable with a generic (but currently not existing) TintNode colorizing the vignette texture and a CompositingNode (also not yet existing) blending the colorized texture on top of an existing rendering. The merits of this approach versus a single VignetteNode encapsulating this functionality should be discussed.
2nd stage - Arbitrary textures
Add the capability to arbitrarily associate new textures to the node (including those stored in modules) and trigger their visibility.
This will allow the association of meanings and more complex textures. For example the texture associated with a "cold hazard" might have snow flakes in it, while one associated with desease might have more organic patterns in it. Crucially, full RGBA textures would be allowed by this feature, requiring only a fade-in/fade-out mechanism in the simplest of circumstances. That been said, this functionality should leave the tinting mechanism from the 1st stage intact, so that even an RGBA texture can be tinted if necessary.
3rd stage - built-in or set controllers
The previous stages assumed external objects controlling which texture is shown by the VignetteNode and what tinting to apply. Leaving the VignetteNode with simple responsibility might be desirable, but a version directly providing these capabilities, perhaps through a "default controller" object, might result easier to handle from a practical perspective.
Furthermore, the default controller or the external controllers could schedule the texture and tinting changes rather than allow immediate changes.
Arbitrarily set controllers would allow for more complex logic to decide which texture and which tinting occurs. For example two separate modules might request that the vignette simultaneously displays hit damage and cold damage, something the node per se might not be able to handle. The controller however could schedule repeated slow pulse-switching between the cold damage and the hit damage display, for as long as the underlying systems require it.
In this context a controller could handle inputs such as "show texture A in 1 second pulses every 3 seconds until further notice". It would then be up to the controller to handle a conflicting instruction such as "show texture B as a fixed texture for the next 10 seconds".
The text was updated successfully, but these errors were encountered:
The current vignette functionality, despite being buried within a shader also doing other stuff, has actually a lot of potential. In its current form it's simply a transparency-only texture that appears as a darker halo framing the view. This is mostly used during the underwater rendering.
When extracted from the current shader and placed into its own VignetteNode, it can acquire new features without too much effort.
Possible enhancements
1st stage - Tinting
Reuse the current texture but add the capacity to arbitrarily change its color.
This will allow external objects controlling the node to arbitrarily vary its color in time, with the vignette halo taking a number of possible meanings:
It should be noted that this achievable with a generic (but currently not existing) TintNode colorizing the vignette texture and a CompositingNode (also not yet existing) blending the colorized texture on top of an existing rendering. The merits of this approach versus a single VignetteNode encapsulating this functionality should be discussed.
2nd stage - Arbitrary textures
Add the capability to arbitrarily associate new textures to the node (including those stored in modules) and trigger their visibility.
This will allow the association of meanings and more complex textures. For example the texture associated with a "cold hazard" might have snow flakes in it, while one associated with desease might have more organic patterns in it. Crucially, full RGBA textures would be allowed by this feature, requiring only a fade-in/fade-out mechanism in the simplest of circumstances. That been said, this functionality should leave the tinting mechanism from the 1st stage intact, so that even an RGBA texture can be tinted if necessary.
3rd stage - built-in or set controllers
The previous stages assumed external objects controlling which texture is shown by the VignetteNode and what tinting to apply. Leaving the VignetteNode with simple responsibility might be desirable, but a version directly providing these capabilities, perhaps through a "default controller" object, might result easier to handle from a practical perspective.
Furthermore, the default controller or the external controllers could schedule the texture and tinting changes rather than allow immediate changes.
Arbitrarily set controllers would allow for more complex logic to decide which texture and which tinting occurs. For example two separate modules might request that the vignette simultaneously displays hit damage and cold damage, something the node per se might not be able to handle. The controller however could schedule repeated slow pulse-switching between the cold damage and the hit damage display, for as long as the underlying systems require it.
In this context a controller could handle inputs such as "show texture A in 1 second pulses every 3 seconds until further notice". It would then be up to the controller to handle a conflicting instruction such as "show texture B as a fixed texture for the next 10 seconds".
The text was updated successfully, but these errors were encountered: