SPECIAL NOTE: highly suggest https://github.com/GarageGames/Torque3D/pull/1441 or a variation thereof to prevent debug spew and false-postives for occlusion results.
With significant research, development and prototyping assistance from both @andr3wmac (shaders and partial hook work), and @LuisAntonRebollo (additional culling)
System operates as follows:
1) materials are given an additional castDynamicShadows boolean entry. (Default at time of writing is true by request. Personal usage at time of writing defaults to false. value is default-initialized in materialDefinition.cpp. script/gui exposed)
2) lights are given a staticRefreshFreq and dynamicRefreshFreq (in milliseconds). script/gui exposed
3) materials are (effectively) sorted into dynamic and static shadowmap render lists based on flag. (see shadowMapPass.cpp)
4) initial shadowmaps are generated for each light and 'list'.
5) as each refreshFreq times out, the relevant shadowmap for a given light is refreshed.
Special notes:
dynamicRefreshFreq for all lights is set to a (script exposed) 8MS refresh timer.
StaticRefreshFreq for the lions share of lights defaults to 250 MS (1/4 of a second)
scattersky's embedded light, which is intended to operate in a mobile manner, defaults to 8
to reiterate, these are all customizable per-light via script/inspector gui in the case of alternate project needs.
- Updated to work with 0.5.x SDK
- Uses Oculus Rendering rather than PostFX
- Stereo rendering refactored so more rendering info is grabbed from the DisplayDevice
- Implements an Offscreen Canvas for in-game gui with oculus
- Message dialogs and metrics display can now go to the OffScreen Canvas (if oculus demo is setup correctly)
Adds the file path to the saveDataFile call (missionpath\missionname.forest as the format)
This correctly utilizes the forest object's datafile field if it's set.
If not, it will create a new forest item with the missionPath\missionName.forest convention.
This also removes the checks for the hardcoded "theForest" forest object name, so that if it is renamed for some reason, it doesn't break.
Lastly, this corrects a minor semi-related bug, where if you are in the forest editor and have a brush selected, and then click to paint, but no forest object currently exists, it prompts to create one. Once the forest object is created, it would trigger the editor to inspect the newly made forest object. If you attempted to paint the currently selected brush, there was a mis-match in the inspector information, and it would trigger a crash.
This has been corrected by re-initializing the forest editor's selected tool mode so it can be utilized immediately after the forest object is created.
+added: gui slider for maximum exposure of vignetting
+changed: shaders to logical min/max floats
this pr contains the glsl shaders as well and therefore makes the
https://github.com/GarageGames/Torque3D/pull/1225 Pull Request obsolete
- Caustics now respects the passed in water plane rather than assume
that the water plane is on the XY plane. This allows for caustics to
work for steep rivers.
- Fixed lerp() warning in underwaterFogP.hlsl.
- Cleaned up turbulence and caustics PostEffect scripts to remove unused
items.
- Caustics are now enabled and disabled based on the control object
being underwater, just like turbulence. Moved this code to fog.cs to be
with the underwater postFX.
- PostEffect class now offers the current projection offset and target
viewport as shader constants.
- Turbulence postFX now takes the current projection offset into
account.
- Turbulence postFX now clamps itself to the current viewport.
- Turbulence postFX now renders after the glow bin, specifically after
the glow postFX renders. This ensures that it can take advantage of
knowing the current viewport rather than affecting the entire render
target.
- Added an option for a postFX to get its viewport from a named texture
in slot 0, if there is one. This allows the postFX to operate when the
named input texture's viewport is different than the current viewport.
- Modified the SSAO postFX to use the new
PFXTargetViewport_NamedInTexture0 option to more closely link SSAO with
the prepass buffer.
- Modifed the GFX method setActiveRenderTarget() with a new parameter
that indicates if the current viewport should be modified with the new
rendering target. This defaults to true to maintain its previous
behaviour. The postFX rendering pipeline sets this to false as it now
handles its own viewport setup, and removes an unnecessary
GFX->setViewport() call.
- General fix for PostFX render targets to properly support the GFX
viewport setting. This is an opt-in change through the use of the new
mTargetViewport property as most PostFX run fine with their assumption
of the viewport being the whole rendering target.
- The SSAO PostFX has been modified to use the new mTargetViewport
property. This allows correct rendering in a side-by-side view such as
with the Oculus Rift, or any other constrained viewport rendering.
- Now requires OVR SDK 0.2.5
- New chromatic aberration correction shader. Can be disabled by
setting $pref::OculusVR::UseChromaticAberrationCorrection to false prior
to enabling Rift display (such as for screen shots).
- FXAA on by default when using full screen on the Rift.
- Can now manually override IPD from script. Otherwise value set in
profile is used.
- Raw sensor data now available through input events (set
$OculusVR::GenerateSensorRawEvents to true) and console methods. The
raw data is acceleration, angular velocity, and magnetometer reading.
- Can determine if magnetometer calibration data is available using a
console method in order to notify the user.