Commit graph

110 commits

Author SHA1 Message Date
Areloch
2db03e47e9 Fixes a crash when you try to delete things without being in selection mode in the forest editor. Adds a sanity check that everything is properly set up before attempting the delete action.
Also adds a fix to the mesh item tab in the forest editor to correct odd selection behavior that could erroneously cause selection of two items in the list when you only clicked one.
2017-02-04 22:45:49 -06:00
Areloch
f8b650f7a1 Reworks the open/close functions of the gui and world editors so they will properly toggle between and clean up when closed. 2017-01-21 17:11:54 -06:00
Johxz
260f108693 added torque SimView tool 2016-12-28 15:25:55 -06:00
Azaezel
d42b1a6be8 colorPicker/swatch srgb display.
dependency from @rextimmy: tolinear and togamma for color+lumnance.
2016-12-22 06:37:34 -06:00
Areloch
eb2d3a908a Tweaked the naming convention to a) be more in line with the prefab creation functions, and b) avoid common artist terminologies that may lead to confusion on what it does. 2016-12-11 23:02:13 -06:00
Areloch
1d754cbbad Makes it so prefabs can correctly 'export to collada' by running the buildPolyList function on it's children.
Also adds a 'Bake Selection to Mesh' option to the tools menu in the editor to export the selected mesh to a collada file, and then replaces the selection with a TSStatic.
2016-12-10 17:27:27 -06:00
Areloch
1e89337825 Merge pull request #1821 from Areloch/platformgenericmenucatch
Sanity check for if the GuiPlatformGenericMenuBar class
2016-11-26 02:01:32 -06:00
Areloch
36f679f539 Sanity check for if the GuiPlatformGenericMenuBar class is valid before trying to load a menubar that uses it, in the event that SDL isn't enabled, or other similar circumstances. 2016-11-08 23:39:07 -06:00
Areloch
15db25c0b8 Fixes minor issue where if a prefab was in one of the root directories rather than further in the heirarchy, it would incorrectly add a folder of the prefab's name that contains the prefab in the creator menu's prefabs tab. 2016-10-26 00:51:05 -05:00
Areloch
bb27535597 Fixes the Toggle Children Lock and Toggle Children Hidden options in the editor context popup menu. 2016-09-14 01:41:49 -05:00
Areloch
a2a4b1c5e3 more case sensitivity corrections. 2016-07-09 16:07:57 -05:00
Areloch
8424f99052 Some case sensitivity fixes. 2016-07-09 14:57:42 -05:00
Areloch
511746828e Merge pull request #1583 from Azaezel/particleEditorExtension
exposes several datablock entries to the particle editor gui subsystem
2016-07-06 22:58:49 -05:00
Areloch
51049b6e8c Fixes the member-of-class check order to properly sort the context. Also fixes a bug with the spacer entries being filtered from the popup menu, which threw off the selection. 2016-07-06 00:46:16 -05:00
Areloch
80dcf3eba5 Merge pull request #1643 from Azaezel/TriggerTrouble
corrects https://github.com/GarageGames/Torque3D/issues/1273
2016-06-18 11:54:41 -05:00
Azaezel
b4dfb9ad08 corrects https://github.com/GarageGames/Torque3D/issues/1273 with suggested resolution 2016-06-09 13:23:37 -05:00
Areloch
3a73344abb Resolves merging-order conflicts for the vehicle physics PR, as well as correcting cmake not blacklisting the componentGroup files if TORQUE_EXPERIMENTAL_EC was flipped off. 2016-06-05 19:17:34 -05:00
Areloch
5122360552 Merge pull request #1587 from Areloch/ProfilerMenuTool
Profiler toggle and World Editor menu entry.
2016-05-31 23:32:31 -05:00
Areloch
823fc41abc Merge pull request #1620 from John3/spaceFolderSceneTree2
Bug space folder in scene tree 2
2016-05-31 23:28:45 -05:00
Areloch
ec8882c3c8 Ensuring all names are the correct casing for Linux 2016-05-26 01:37:14 -05:00
Areloch
fb7e4f92ef Adds in a GameObjects folder that lists all available game objects to the Scripted objects tab in the creator panel in the editor. 2016-05-25 22:16:24 -05:00
Areloch
ee6d9961e3 Merge pull request #1582 from Azaezel/SubSurf
Reimplements a form of subsurface scattering
2016-05-25 13:35:44 -05:00
Areloch
358bbdb740 Removed script calls to some fields that no longer exist, which was causing console errors. 2016-05-25 13:32:20 -05:00
Areloch
9d47830a8b Merge branch 'development' of https://github.com/GarageGames/Torque3D into development 2016-05-24 20:09:53 -05:00
John3
4bb63f277e change pipe to underscore and fix prefabs assets 2016-05-21 15:10:35 -05:00
Areloch
6517b86491 Editor integration for creation of entities and GameObjects. 2016-05-21 11:47:10 -05:00
John3
7ae1d3d996 Bug space folder in scene tree.
Fix by David Robert Pemberton
https://www.garagegames.com/community/blogs/view/22295

You can see the folder "soldier actor"
<img src="http://i.imgur.com/8XSWrrF.png"/>
2016-05-20 17:04:56 -05:00
Areloch
6fe0b1789d Adds some example components, game objects and the tools and scripts to utilize them. 2016-05-15 16:24:47 -05:00
Areloch
25d2fd877b Makes the profiler pop-up act on a toggle, and also adds an entry into the World Editor's Tool menu to easily activate it. 2016-04-20 01:06:31 -05:00
Areloch
587ab6a39e Adds 2 fields to expose the net simulation functionality more readily to the NetGraph GUI.
Also added a Tools option to the World Editor menubar, with the NetGraph as the first option to make it easier to activate the NetGraph in the editor.
2016-04-20 00:46:41 -05:00
Azaezel
00cc949011 reimplements a form of subsurface scattering 2016-04-15 00:20:55 -05:00
Azaezel
4b983cf23e exposes several datablock entries to the particle editor gui subsystem
windCoefficient, animateTexture, framesPerSec, animTexFrames*, animTexTiling

*at time of writing, it will read and write this entry to disk, but will not update in realtime.
2016-03-11 23:36:00 -06:00
Areloch
908be4818f Merge pull request #1519 from Azaezel/deferredShading
Deferred shading
2016-02-27 15:08:20 -06:00
Anis
a34cf9e3f9 Merge pull request #1185 from MusicMonkey5555/script-improvements
Improved file open dialogue
2016-02-26 23:01:24 +01:00
Anis A. Hireche
2ff18cfc3f Merge remote-tracking branch 'refs/remotes/GarageGames/development' into ColorPickerAdvanced 2016-02-26 20:15:33 +01: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
5b5c6b9907 Deferred Shading
Phase 1: buffers
engine:
provides the following hooks and methods
A) render target "color", and "matinfo". these correspond to texture[0] = "#color";  texture[2] = "#matinfo"; entries in scripts
B) utilizes the independentMrtBitDepth method added GarageGames#857 to set color to an 8RGBA if cards support it
C) adds an RenderPrePassMgr::_initShaders() method to support void RenderPrePassMgr::clearBuffers(). This operates as a pseudo-postfx by rendering a veiwspace plane which fills the screen, then calls a shader which fills both the introduced rendertarget buffers and the prepass buffer to relevant defaults (white with full alpha for prepass, black with full alpha for color and material respectively)

script:
\game\tools\worldEditor\main.cs adds additional hooks similar to GarageGames#863 for colorbuffer, specular map, and backbuffer display
\game\core\scripts\client\lighting\advanced\deferredShading.cs adds the clearbuffer shader, visualizers, and the ShaderData( AL_DeferredShader )  +  PostEffect( AL_DeferredShading ) which combine the various buffers into the output which reaches the screen under normal conditions, as well as the extended debug visualizers.
again, note the lines

   texture[0] = "#color";
   texture[1] = "#lightinfo";
   texture[2] = "#matinfo";
   target = "$backBuffer";
in particular for the core tie-in.

shader:
\game\shaders\common\lighting\advanced\deferredColorShaderP.hlsl
\game\shaders\common\lighting\advanced\gl\deferredClearGBufferP.glsl
the previously mentioned shaders which clear the buffers to specified colors

\game\shaders\common\lighting\advanced\deferredShadingP.hlsl
\game\shaders\common\lighting\advanced\gl\deferredShadingP.glsl
the tie-in shaders

the rest are visualizers

purpose: to expose methodology that allows one to render color, lighting and material information such as specular and gloss which effect the result of both when combined

long term intent: the previous prepass lighting methodology while serviceable, unfortunately had the side effect of throwing out raw color information required by more modern pipelines and methodologies. This preserves that data while also allowing the manipulation to occur only on a screenspace (or reflected speudo-screenspace) basis.
2016-02-16 01:50:58 -06:00
Areloch
a90eb9762b Re-submission of the Volumetric Fog PR, with cleanup. 2015-12-01 00:10:13 -06:00
Areloch
92aa785bb2 Merge pull request #1442 from Azaezel/shadow_caching
This all seems to work pretty well.
2015-11-12 12:49:58 -06:00
blackwc
ea1931d215 improved radio button 2015-10-23 20:37:22 -04:00
Azaezel
2753f562e8 shadow caching
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.
2015-10-13 18:12:19 -05:00
Areloch
3d65f1f8cd Fixes it so when using SDL, the editor menubar will correctly react to accelerator commands. 2015-09-24 22:23:26 -05:00
Azaezel
1107d23e23 git hates batch renames pt2 2015-08-18 06:22:57 -05:00
Azaezel
dd89f9b82a git hates batch renames pt1 2015-08-18 06:22:21 -05:00
Daniel Buckmaster
680f4442f0 Merge pull request #1399 from Areloch/PhysicsViz
Adds a debug visualization mode for the active physics world.
2015-08-15 19:51:18 +10:00
Azaezel
826be7287a case sensitivity script fixes 2015-08-14 18:00:36 -05:00
Areloch
242d317a31 Adds a debug visualization mode for the active physics world.
Allows you to see the active collision info for the physics engine.
2015-08-13 23:38:59 -05:00
Areloch
b614d87e78 Fixes the menubar functionality when using SDL.
This resolves menu order, cleanup and close/re-open issues, as well as crashes on close.

It also modifies the look slightly to look closer to the windows menubar to keep a cohesive look regardless of platform.
2015-08-04 22:57:25 -05:00
Daniel Buckmaster
b24bdfbc8b Merge pull request #1374 from Azaezel/PSSMDebugRender
"AL: PSSM Cascade Viz" tool-button
2015-07-28 14:45:50 +10:00
Azaezel
ac39253b98 "AL: PSSM Cascade Viz" tool-button
Adds a debug toggle for the script-exposed global found c152ae86f3/Engine/source/lighting/advanced/advancedLightBinManager.cpp (L168)
2015-07-27 23:00:54 -05:00