Commit graph

25 commits

Author SHA1 Message Date
Tim Barnes
15aeba20e7 timmy merge work 2018-11-28 17:51:52 +10:00
Areloch
83dd55e851 Add cubemap arrays, as well as control for generation of MIPs on texture targets. 2018-09-16 18:19:04 -05:00
Areloch
ef5e3a5271 Core implementation of Physical Based Rendering. 2018-09-15 20:19:57 -05:00
Azaezel
6813f255d0 method to make sure we're not getting pixel shader inputs mixed with outputs. 2017-07-09 15:15:30 -05:00
Areloch
0801a3cca8 Implementation of sRGB image support. Overhauls the linearization setup to utilize the sRGB image types, as well as refactors the use of ColorF and ColorI to be properly internally consistent. ColorIs are used only for front-facing/editing/UI settings, and ColorFs, now renamed to LinearColorF to reduce confusion of purpose, are used for color info in the engine itself. This avoids confusing and expensive conversions back and forth between types and avoids botches with linearity. Majority work done by @rextimmy 2017-06-23 11:36:20 -05:00
James Urquhart
212ac36cc1 Tidy up indentation in openvr changes 2016-09-11 22:51:00 +01:00
James Urquhart
f91aa639d6 Remove projection offset, add the hmd head matrix. Also tidy up a few things. 2016-09-11 22:42:42 +01:00
James Urquhart
ba91478fad Baseline working openvr code 2016-09-11 22:42:42 +01:00
Areloch
908be4818f Merge pull request #1519 from Azaezel/deferredShading
Deferred shading
2016-02-27 15:08:20 -06:00
Dušan Jocić
28d303c5ea Added immutable vertex and index buffers. 2016-02-20 21:28:18 +01:00
Azaezel
8c5810adad The final step (barring any overlooked missing bits, requested refactors, and of course, rolling in dependencies already submitted as PRs) consists of:
renderPrePassMgr.cpp related:
A) shifting .addFeature( MFT_XYZ); calls from ProcessedShaderMaterial::_determineFeatures to ProcessedPrePassMaterial::_determineFeatures
B) mimicking the "// set the XXX if different" entries from RenderMeshMgr::render in RenderPrePassMgr::render
C) fleshing out ProcessedPrePassMaterial::getNumStages() so that it shares a 1:1 correlation with ProcessedShaderMaterial::getNumStages()
D) causing inline void Swizzle<T, mapLength>::ToBuffer( void *destination, const void *source, const dsize_t size )  to silently fail rather than fatally assert if a source or destination buffer is not yet ready to be filled. (support for #customTarget scripted render targets)

Reflections:
A) removing reflectRenderState.disableAdvancedLightingBins(true); entries. this would otherwise early out from prepass and provide no color data whatsoever.
B) removing the fd.features.addFeature( MFT_ForwardShading ); entry forcing all materials to be forward lit when reflected.
C) 2 things best described bluntly as working hacks:
C1) when reflected, a scattersky is rotated PI along it's z then x axis in order to draw properly.
C2) along similar lines, in terraincellmaterial, we shut off culling if it's a prepass material.

Skies: scattersky is given a pair of rotations for reflection purposes, all sky objects are given a z value for depth testing.
2016-02-16 02:50:49 -06:00
Areloch
11398bb04e Issue found with PVS-Studio:
A lot of instances where some function args are not actually modified in any way, meaning that it is better for performance to convert them into const references. This prevents an additional copy, which can help performance.
2015-07-16 22:02:18 -05:00
James Urquhart
efc47ed757 Basic fix for stereo rendering without a display device 2015-06-21 20:59:41 +01:00
James Urquhart
3a457749ec Oculus VR DK2 Support
- 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)
2015-05-06 23:09:51 +01:00
LuisAntonRebollo
60f4d4f282 Merge pull request #926 from BeamNG/primbuild_for_non_ffp
Fix PrimBuild with non Fixed Function Pipeline.
2014-11-30 02:21:36 +01:00
LuisAntonRebollo
03ffa1ddd3 Merge pull request #925 from BeamNG/shaderdata_samplernames
Add sampler names to ShaderData
2014-11-30 02:21:30 +01:00
LuisAntonRebollo
1c95ce21d6 Merge pull request #608 from BeamNG/use_gfxdevice_setupgenericshaders
Use GFXDevice::setupGenericShaders for support non Fixed Fuction Pipelines.
2014-11-30 02:20:00 +01:00
LuisAntonRebollo
fa1b2d87b1 Fix PrimBuild with non Fixed Function Pipeline. 2014-11-08 17:55:37 +01:00
LuisAntonRebollo
79e158d528 Add sampler names to ShaderData for use on old versions of OpenGL and Opengl ES2 that not support explicit sampler location on shader files. 2014-11-08 17:50:37 +01:00
Azaezel
4f3be25699 prevents an infinite while loop by putting a cap of 4MS on occlusion queries. 2014-07-18 00:40:11 -05:00
LuisAntonRebollo
33742599b3 Use GFXDevice::setupGenericShaders for support non Fixed Fuction Pipelines.
OpenGL and DirectX11 not support FFP, and GFDevice::disableShaders has not the necessary information to decide the shader to be used.

GFDevice::SetupGenericShaders is used instead of GFDevice::disableShaders.

GFDevice::disableShaders will be deprecated on T3D 4.0
2014-04-13 17:57:40 +02:00
DavidWyand-GG
39ab93636c Update ReflectionManager on Scene Field Change
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.
2013-10-31 16:54:22 -04:00
DavidWyand-GG
15673810c6 Expand PostFX Viewport Options
- 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.
2013-10-24 13:40:44 -04:00
DavidWyand-GG
b32e7688c2 Side by side rendering
- Side by side rendering implemented throughout the graphics pipeline.
- New GuiTSCtrl renderStyle property is set to "stereo side by side" to
activate.
- You set an IDisplayDevice on the GameConnection to define any vertical
FOV, projection offset, and stereo eye offset properties required for
the stereo rendering (no display device included with this commit).
- Full and Empty templates updated with correct scripts and shaders.
2013-04-09 15:19:18 -04:00
DavidWyand-GG
7dbfe6994d Engine directory for ticket #1 2012-09-19 11:15:01 -04:00