Commit graph

114 commits

Author SHA1 Message Date
Areloch 1c2f90a190 Initial implementation of the Scene object for handling scenes/levels in a more consistent and deliberate way. 2019-02-23 15:55:28 -06:00
Areloch 3a71c75596
Merge branch 'development' into EngineAPI-Refactor 2018-12-09 14:48:50 -06:00
Brian Roberts e434d61de3
Update terrFeatureHLSL.cpp 2018-10-29 13:22:16 -05:00
Brian Roberts fb25d9c5a1
Update terrFeatureGLSL.cpp 2018-10-29 13:21:42 -05:00
Azaezel fe2b3aef1a filter out pixel shader normalmap calcs when not in deferred mode. 2018-09-26 06:49:36 -05:00
Azaezel 59130078e2 Merge branch 'development' of https://github.com/GarageGames/Torque3D into memberMess
# Conflicts:
#	Engine/source/sfx/sfxSystem.cpp
2018-04-23 10:08:14 -05:00
Lukas Joergensen 323206a796 Eliminate ConsoleStaticMethod 2018-04-20 20:27:09 +02:00
Lukas Joergensen 3c99ef73a9 Eliminate DefineConsoleMethod 2018-04-17 21:01:50 +02:00
Lukas Joergensen 5bde18143f Eliminate DefineConsoleFunction 2018-04-17 20:54:08 +02:00
Areloch 037d089c4d
Merge pull request #2146 from Azaezel/specializationShenanigans
changes find, swap, for_each, and delete_pointer from global to t3d namespace
2018-04-17 03:02:03 -05:00
Azaezel 28e509af1a Merge branch 'development' of https://github.com/GarageGames/Torque3D into memberMess
# Conflicts:
#	Engine/source/console/consoleFunctions.cpp
2018-03-28 15:42:34 -05:00
Azaezel 1fc7192018 terrain file I/O and opengl rendering cleanup 2018-03-13 17:33:13 -05:00
Glenn Smith a94587af43 Use strncpy instead of strcpy because again, buffer overflows 2018-03-06 02:35:33 -05:00
Glenn Smith 1728fe39ad Use strncat instead of strcat to prevent some buffer overflows 2018-03-06 00:48:44 -05:00
Marc Chapman af62b5c0a9 Phase 2: #ifdef for Zodiacs and particles 2018-01-23 22:03:18 +00:00
Marc Chapman 1c2effd7fa Phase 1: Add a #define test 2018-01-23 20:24:35 +00:00
Azaezel 491a7dcfdd tAlgorythm fed namespace T3D for better library interoperability. resulted in the need to specify usage in... a few places. 2017-12-27 22:57:47 -06:00
Areloch 35d649b57e Merge pull request #2056 from Bloodknight/afx_merge_main
Afx merge main
2017-10-11 08:47:47 -05:00
Areloch e15c4a7e62 Merge pull request #2051 from lukaspj/correct-terrain-colors-linear
Fix for terrain detail color blending post-linearization
2017-08-08 23:35:24 -05:00
Marc Chapman 8a6ac1fb0f terrain-zodiacs -- Changes made for rendering zodiacs on regular terrain. 2017-07-26 22:10:56 +01:00
Areloch 7567ca10c3 Reworks the $Core::commonShaderPath variable usage to be a static variable in ShaderGen for efficiency(only one getVariable when shadergen is initialized), as well as implements the ability to set a default value, and ensures that it tries to set a path even if the pref variable is missing which is important for ported projects from older builds. 2017-07-24 00:40:27 -05:00
Lukas Jørgensen f3fc5b1fc0 Fix for terrain detail color blending post-linearization 2017-07-20 11:32:17 +02: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
Areloch 23fb9ba38b Conflict resolution with devhead.
Cleaned up a few remaining d3d9 references in the cmake file.
2017-06-01 23:54:44 -05:00
Areloch 7e5e3b5105 Removes Direct3D9 functionality. 2017-05-28 16:51:31 -05:00
Areloch 9ce521d95f Catches the remaining prepass to deferred changes on the engine side. 2017-05-14 18:28:17 -05:00
Areloch 1bfdb41694 Goes and replaces the references/names that use Prepass to be Deferred, since we're actually using deferred. 2017-04-11 00:23:14 -05:00
Areloch d680dc9934 Initial implementation of the new Base Game Template and some starting modules.
This makes some tweaks to the engine to support this, specifically, it tweaks the hardcoded shaderpaths to defer to a pref variable, so none of the shader paths are hardcoded.

Also tweaks how post effects read in texture files, removing a bizzare filepath interpretation choice, where if the file path didn't start with "/" it forcefully appended the script's file path. This made it impossible to have images not in the same dir as the script file defining the post effect.

This was changed and the existing template's post effects tweaked for now to just add "./" to those few paths impacted, as well as the perf vars to support the non-hardcoded shader paths in the engine.
2017-02-24 02:40:56 -06:00
RexTimmy d46f82ef1d re-enable face culling for the terrain 2016-12-01 11:03:32 +10:00
Areloch 6cc7bcd2e0 Merge pull request #1805 from Azaezel/startRightEndRight
clang: constructor initialization order
2016-10-19 08:39:12 -05:00
Areloch 121d65215e Tweaks any enums that use uint_max values so that they have hard types to avoid any compiler kerfluffles with C++11 value narrowing, specifically pertaining to clang. 2016-10-17 01:00:12 -05:00
Azaezel fbfd3ed8ed clang: constructor initialization order
while not a major issue per-se, the sheer number of times the engine has to jump back in memory and backfill data in a given class can add up. First run of... many.,
2016-10-14 18:16:55 -05:00
Azaezel 598fb758f3 embeds blendtotal into the low bit for the normal|depth buffer for terrains to support multi-pass blending. 2016-09-14 15:35:35 -05:00
Azaezel a0c0f5766f adresses #1704: partial reversion to 3.8 specs regarding layer blending. 2016-07-29 11:26:44 -05:00
rextimmy 41e5caf22b Direct3D11 Engine/source changes 2016-03-20 21:52:11 +10:00
Anis 7bba3ee2de pushed a forgotten feature on OpenGL terrrain.
added this: 69f2efab8f on OpenGL
2016-03-04 22:51:09 +01:00
Areloch 908be4818f Merge pull request #1519 from Azaezel/deferredShading
Deferred shading
2016-02-27 15:08:20 -06:00
rextimmy 2383e8e43e Fix for TerrainFeatGLSL getProcessIndex() signed mismatch 2016-02-21 22:24:05 +10:00
rextimmy 36daca8d8e Corrected FeatureSet::getNextFeatureIndex and ShaderFeature::getProcessIndex signed mismatch. 2016-02-21 15:10:58 +10:00
Azaezel 196b214eae engine:
defines and alters a series of material features for deferred shading in order to define a fully fleshed out multiple render target gbuffer patterned after the general principles outlined http://www.catalinzima.com/xna/tutorials/deferred-rendering-in-xna/creating-the-g-buffer/ (though I cannot stress enough *not* using the identical layout)

script:
removes dead material features (ie: those that never functioned to begin with)

shader:
bool getFlag(float flags, int num) definition for retreiving data from the 3rd (matinfo) gbuffer slot's red channel (more on that shortly)

purpose:
_A)_ Small primer on how material features function:
When a https://github.com/GarageGames/Torque3D/search?utf8=%E2%9C%93&q=_determineFeatures call is executed, certain conditions trigger a given .addFeature(MFT_SOMEFEATURE) call based upon material definition entries, be it a value, a texture reference, or even the presence or lack thereof for another feature. In general terms, the first to be executed is ProcessedShaderMaterial::_determineFeatures followed by ProcessedPrePassMaterial::_determineFeatures. The next commit will provide the bindings there. For now it's enough to understand that one of those two will trigger the shadergen subsystem, when rendering a material, to check it's associated list of features and spit out a shader if one is not already defined, or reference a pre-existing one that includes codelines determined by that list of features.

Relevant execution of this is as follows:
DeclareFeatureType( MFT_DeferredDiffuseMap ); - Name
ImplementFeatureType( MFT_DeferredDiffuseMap, MFG_Texture, 2.0f, false ); - Codeline Insertion Order
FEATUREMGR->registerFeature( MFT_DeferredDiffuseMap, new DeferredDiffuseMapHLSL ); - Hook to class which actually generates code
alternately    FEATUREMGR->registerFeature( MFT_Imposter, new NamedFeatureHLSL( "Imposter" ) ); - a simple feature that serves no purpose further than as a test of it's existence (to modify other features for instance)

class DeferredDiffuseMapHLSL : public ShaderFeatureHLSL - Class definition
{
getName  -embeded in the proceedural shader as a remline both up top and before actual code insertions
processPix  - pixel shader codeline insertions
getOutputTargets - used to determine which buffer is written to (assumes only one. depending on branched logic, older features that may be run for either forward or deferred rendering depending on circumstance may have a logical switch based on additional feature flags. as an example:  TerrainBaseMapFeatHLSL::getOutputTargets)
getResources - associated with the Resources struct, closely aligned with the hardware regestry
 getBlendOp - used to determine what blend operation to use if a material requires a second pass (defaults to overwriting)
setTexData - ???
processVert - vertex shader codeline insertions
};

_B)_
The resultant Gbuffer layout defined by the previous commit therefore is as follows:
defaultrendertarget (referred to in shaders as out.col or col depending on GFX plugin) contains either lighting and normal data, or color data depending on if it is used in a deferred or forward lit manner (note for forward lit, this data is replaced as a second step with color. why custommaterials have traditionally had problems with lighting)
color1 (referred to in shaders as out.col1 or col1 depending on GFX plugin) RGB color data and an A for blending operations (including transparency)
color2 (referred to in shaders as out.col2 or col2 depending on GFX plugin) contains:
 red channel comprising material flags such as metalness, emissive, ect,
 green channel for translucency (light shining through, as oposed to  see-through transparency), blue for
 blue for specular strength (how much light influences net color)
 alpha for specular power (generally how reflective/glossy an object is)

long term purpose:
further down the line, these will be used to condition data for use with a PBR subsystem, with further corrections to the underlying mathematics, strength being replaced by roughness, and power by metalness
2016-02-16 02:23:23 -06:00
Azaezel ce2964d2d0 diffuse/albedo texture linearization
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html
2015-11-11 13:52:46 -06:00
Areloch 165cdb64e9 Merge pull request #1322 from Areloch/String_isEmpty_Convert
Replace uses of dStrIsEmpty with new String::isEmpty
2015-10-31 23:40:13 -05:00
Areloch b1d2ba8412 Merge pull request #1379 from Azaezel/C4189
C4189 warning cleanups
2015-09-02 19:46:28 -05:00
Areloch 71c19a6151 Companion PR to #719
Adds the OGL side. redoing it to make sure the PR history is clean.
2015-08-28 00:27:08 -05:00
Areloch 95ab3a33a5 Merge pull request #719 from rextimmy/dxtnm-parallax-fix
Fix to allow parallax mapping with dxtnm textures via the red channel.
2015-08-27 23:59:20 -05:00
Azaezel 555610f69f Addresses roughly half of the C4189 errors though the following methodologies:
1) truly unused vars removed
2) vars leading to remmed out code for debugging remmed in turn.

left out:
vars in macros.
2015-07-29 03:03:27 -05:00
Daniel Buckmaster 4f2f1ca4e1 Merge pull request #1356 from Areloch/PVS_Cleanup_813
Convert un-modified function arguments to const references.
2015-07-20 22:55:22 +10: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
Areloch 2002d74b78 Issue found with PVS-Studio:
Many instances of a function or expression being used repeatedly, which can lower performance.

Fixed it in these cases by creating on local var, reference or pointer that's used instead.
2015-07-13 22:51:17 -05:00
Azaezel 6218d792f3 No need for server-only aps to generate visible textures. (the other had a transcription error) 2015-06-15 21:07:33 +10:00