- Fix for issue https://github.com/GarageGames/Torque3D/issues/525 This
fix takes into account the skewed view into the world when you have a
projection offset and the ability to see further into the scene at the
edges opposite to the offset.
- SceneCullingState now has two frustum rather than one: a culling
frustum and camera frustum.
- The camera frustum should be referenced when you need the projection
matrix or don't want a skewed frustum.
- The culling frustum should be referenced during any scene culling or
when determining what dynamic geometry to render. It currently skews
itself to take into account any projection offset (automatically
calculated in SceneCullingState constructor).
- When there is no projection offset, the camera frustum and culling
frustum are the same. This usually means any time when not using the
Oculus Rift.
This reverts the change made by
https://github.com/GarageGames/Torque3D/pull/490 It actually goes
further and comments out the Player's buoyancy calculation rather than
just the change in velocity.
Set the default WaterFogData plane distance to be the same as global
bounds. This solves an issue with the connection's control object
mistakenly thinking it is under a water plane in a debug build.
- 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.
During side-by-side rendering the refraction texture needs to be updated
for both the left and right fields. These changes add a new GFXDevice
event type to track when a field is about to be rendered. The
ReflectionManager listens to this new event and ensures that the
refraction texture will be updated if it is referenced by a material.
- Frustum comparison now includes comparing the projection offset.
- Fixes objects that only set the projection matrix if the frustum has
changed during side-by-side rendering, such as the WaterPlane.
- The PlaneReflector class now supports side-by-side rendering. This
does mean that while in this rendering style that all planar reflections
are rendered twice, as reflection is a screen space effect from the eye
point of view.
- Planar reflections now work in the Oculus Rift.
- Modified GuiTSCtrl::onRender() to move up where the rendering style is
defined to just before the reflection manager has its turn.
- 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.
- Modified the glow postFX to now respect the current viewport settings.
- This fixes glow rendering for the Oculus Rift and any other time the
glow rendering should be limited to a region of the back buffer.
This is a rework of the Pull Request
https://github.com/GarageGames/Torque3D/pull/453 based on my own
understanding of the issue. The details may be found in the description
of the original Pull Request.
- Modified OculusVRSensorData::compare() to only work with the raw
sensor data when specifically requested. No need to process those
values if the user hasn't asked for them.
- 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.
Change both the damage flash and white out values to return 0 by
default. This prevents a damage flash or white out from displaying for
GameBase derived classes that don't override these methods. From
https://github.com/GarageGames/Torque3D/issues/395
Fix for mounted image lights beyond the first weapon light. Before this
fix all mounted images that have lights would not function if mounted to
a slot after a mounted image that uses a weapon light.