opengl can now compile with ubo buffer objects similar to cbuffers on dx side.
cleaned double up of data from both sides, gfxhandles only need to use the desc info instead of holding onto its own.
deleteSelection when an output node had multiple connections only the first one was deleted, needed a new function to return a vector of connections that are now looped and deleted at the end of delete selection.
few other minor additions and fixes.
add the extra functions for drawing gui elements
RoundedRectangle:
All draw rect functions now pass through roundedRectangle which uses a shader and can draw borders, and rounds the corners
Draw thick line:
draws a line thicker than 1 pixel, uses a geometry shader to do this
Draw Circle:
Draws a circle with a border parameter.
Adds the ground work for geometry shaders
Expands shaderData and gfxShader to allow for more shader types
note: when building a GFXShader in source you have to call setShaderStageFile with the shaderStage and the filepath for that stage.
Once we add compute shaders this will become more apparent as compute shaders are a stage of their own and do not require vertex and pixel files whereas other shaders sometimes do.
Incorrect cmake directory was messing up reading from zips
STB was failing to read from zips, it was failing to get the file info, something we were using as an early out, now if that files on the filepath, we use the memory read instead since stream needs to be a success to get to that point.
Reverted back to a 2d array since when the const buffer changes are made to the shaders they will be completely swapped out for a 1d array with a max size of 16 for the program, id3d11buffers will be shared across shaders apart from object buffers. We still need to decide on a structure to get everything setup so to keep functionality a max of 2 buffers per stage with 1 buffer as a padding so we can start coding constant buffers right away
need to reverse the bitshift on shaderstages so we get values between 0-5, need to also revert the mBoundConstVec back to a 2dimensional array so that the binding point can be dynamic as well.
Added multiple descriptions to handles.
While maps are very efficient and match data very quickly due to hashing and what not, they are tricky memory wise, we cant clear them if they are only made up of structs and enums. Need to explore other methods for doing this. Original system had a sub buffer system with a check based on whether the handle was marked vertex/pixel. With 6 stages possible now we need to think of a more effective method. Since shaderstage is now a bit flag maybe some sort of streaming setup could be used to write without a loop.
working example, renders all gui controls.
We still cant render a scene, something to do with the constant buffer at slot 0 of the vertex shader being too small..... gotta figure this one out..................
up custommaterial inputs to 16
add Material::PhotometricMask:handling to processedcustommaterial
and for paranoias sake go ahead and be explicit about _getLightMaterial (those *should* be unneeded as they optionally default to that, but it's how they were in the beatup fork during testing)
Refactored DX Shader compilation and reflection to be more similar to opengl
Added support for more than 1 const buffer per shader stage.
This is boilerplate code, no functionality yet, that will be added in further commits. Though this builds without errors do not try and run it at this point.
Updated IES loader to use torque math functions and calls in the problem areas for mac and linux.
New F32_MIN_EX which is lower than F32_MIN (required for ies profiles)
Both ies and cookies can now exist on a light
We are still not using all the capabilities of an IES profile, such as candela and luminance values we are just using them as a mask for the moment
Issues compiling on mac and linux, will need to update the ies-loader to use torque methods instead of std::
ADDED: Ability to add IES profile as the cookie texture slot in both point lights and spot lights
TODO:
Have the IES Profile also drive the settings for the lights.
Make it work with Cookie textures. IES profiles are to be another slot in the advanced light section.
note this *does* require a baked skylight in the main scene
todo: track down why a similar protocol does not operate for guimaterialpreview and guiobjectview
Fixes the handling of imageAssets for array'd field types, as well asfixing the editor behavior of guiBitmapCtrl so the imageAssets correctly update the fields upon editing
clang + ninja via clion disliked a string assignment from a case that could feed a string either another string or a char *, soi used the latter acroiss the board
* Adds method to Scene to delete dynamic objects in the scene
* Add getNodeTransform to ShapeBase
* Add sanity check to AFX ea_update function to avoid divide by zero
* Adds ability to set color mul on GuiBitmapBorderCtrl like bitmapCtrl
* MatrixF utilty functions/operators
* Add ability to ignore an object in the containerBoxEmpty method call
* Adds some better initialization/sanity handling for resetWorldBox and resetRenderWorldBox for SceneObject
Updates the dataBlock field type to properly present categorized listings
Expands the datablock Field to have an edit and add buttons on the field to make the workflow simpler
Adds utility functions to GuiPopUpMenuCtrlEx to control indentation, categories and searchability
Expands datablock editor functionality to be able to create a datablock of a type to pre-set the inheritFrom param of the process early(used for the add new button on DB fields to carry-through the current DB to the creation process of a derivative)
If the statement is a terminating statement on slot assignment (such as %var[%i]++;), the stack has to be popped everytime slot arrays are used regardless of the expression type.
-Removed LPNG
-Removed LJPEG
-Re-Added DefferredPNGWriter from rextimmy stb work
Commented out lines about file saving and reading in gfont, these are good for debugging font saves.
it's getting there, but there have been a few spots noted where it eroneously corrupts text, so we'll have to pull this back out for a bit barring a proper resolution
getValueFromKey and getKeyFromValue.
both look to the left or right hand entry for the other one
example:
%array.add("startPos","0 0 0 ");
echo(">".%array.getValueFromKey("startPos"));
> 0 0 0
- Changed ChooseLevelMenu layout to have a vertical list for levels with a static preview set, as well as a separate tab for server configs if trying to create a server
- Added field to set password for connecting to passworded servers on the JoinServerMenu
- Added sanity check so you can't try and activate a menuList that has no children(caused error spam)
unlike in the straight compile it now case it does in fact need to stick around. read injects the CodeBlock into a management system, so no worries about cleanup
Con::EvalResult CodeBlock::exec -
objectCreationStackIndex needs to be signed as we test if it goes sub-zero
ConsoleValue Namespace::Entry::execute -
compiler yells about returning a temp via std::move
bool TorqueScriptRuntime::executeFile -
report the name of the dso output file, not the source scxript input file
- Fixed formatting of resolution strings for the internal values, allowing them to be properly parsed and applied by the options menu/canvas
- Fixed display of Display Device on option's menu
- Fixed Issue of it not displaying any keybinds in keyboard/gamepad options if there's only a single actionmap
- Added 'hold to scroll' action to optionsMenu
- Added apply button to options menu
- Added remap button to options menu when on keyboard/gamepad keybinds categories
- Fixed up the remap logic so remapping a key only unbinds the matched device being bound, so binds for different devices are untouched
- Made keybinds options properly refresh when keybinds are changed
- Shifted keyboard "go" keybind for menu nav from Enter to Space for easier use
- Removed stick keybinds from gamepad
based on https://github.com/TorqueGameEngines/Torque3D/pull/1165 and after further talks with @AtomicWalrus:
use the massbox or bounds box based mRigid.setObjectInertia method
to reduce recirulating, combine resolvecollision and resolvecontacts
clamp seperation force for contact resolution
gravity normalized to earth standard (9.8,not 20)
take delta-time into account *once* for kinetic energy vs gravity rest checks
and for debug purposes, expose mRigid.atRest to the inspector to see if it's truly at reast or grinding calcs to minimal effect
- Standardizes highlighting behavior between keybind and mouse highlighting of buttons
- Standardized onHighlighted callback for buttonBase
- Fixed handling of up/down nav with gamepad stick
- Added logic to make holding down nav keybinds iterate over buttons in menu lists
by locking in the material feature variation to ensure it uses vertex lighting due to colorization, as well as a few other switches, and applying an explicit vs default stateblock blend
do similar with moon so you don't have to set that to explicitly translucent either
Adds ability to select an actionmap for a GuiInputCtrl which will push it onto the stack, so menus can enact an action map
Update of the MainMenuGUI to fit new style and have the logic needed for KBM and gamepad navigation
Very early wipwork of OptionsMenu overhaul for new standard
review of per and post bake protocols showed that the CAPTURING shader macro was not being properly recompiled in. as opengl was not playing nice with a simple batch shader recompilation for all effected shaders, a full lightmanager restart is at time of writing required. once we have a proper globally cached scene structure stored off GPU side, we'll want to change GFXShader::addGlobalMacro("CAPTURING", String("1")); on over to dirtying that value in the cached buffer via setting a shader global uniform
review of prefilter examples shows a fixed sample count of 1024 across multiple implementations, so we'll use the standard barring further research into where that number is comming from for a scalar approach
review of gl shaders shows a doubleup in compiled state testing, so slimmed that down and added additional debugging reports
Added support for .hdr format, atm just being converted to ldr after the exposure is applied.
cleanup dds file
PNG skips 16bit altogether at the moment for textureArray issues.
Generating image previews of image assets was failing
DDS remove redundant check for stream status.
STB requires the file to be free before being written to, move check to make sure we can open the path into gBitmap and remove FileStream checks from everywhere else.
1) fix spotlight shadow casting. we weren't properly accounting for reversedepthbuffer there
2) fix mismatched variables in forward lit spotlight param array
3) use disney diffuse in the generalized brdf, and apply it for spotlights after angular attenuation, not before
4) .provide a generailze luxTargMultiplier approach for spot and point lights (as well as future growth areas) so that range, angle ect can impact the brightness variable sent to a given light source shader without perpixel overhead
5) for spotlightParams in particular, use sizeof(point4f) for the alignedarray untill that's properly reviewed/revised
6) narrow attenuation slightly based on a given lights dot product to prevent tool vs outcome leakage, plus provide safeties for when a given spotslight's inner and outter angles match identially
SceneObject now defaults to a category of "misc"
getCategoryOfClass now checks parent classes for what categories they hold so that variants can inherit
categories are in one of a few rough groups and subgroups depending on actual mapper needs/usages
Shifts "Help" menubar entry in world editor to use new API structure as example/test
Removes extraneous 'MainEditor'
Adds EditorCore module
Moved Menubuilder to EditorCore module
Fixes Help Menu editor settings so they properly point at modern documentation and forum URLs
Fixes handling of MenuBar so when inserting new items, ensures the menubar refreshes as would be expected
Adds remove function to menubar to remove a menu
Removes old commented console methods from menubar file
Adds checks for onMouseDown and onMouseUp for PopupMenu so items that are submenus aren't clickable like normal items
-Add buttons to the inspector for SFXEmitter that will play pause and stop the sfxEmitter.
NOTE: Purely effects the state of the emitter when in the editor this will not effect sfxEmitter functionality in a level.
* GroundWork
-Reverted SFXPlaylist since it is going to be made from an asset now instead.
-Added extra options to soundAssets description.
-SFXPlaylist may need an onAdd function
* Update sfxController.cpp
* SFXPlaylist data
-Added sfxPlaylist init persist fields for the slots to sound asset
-Added logic to fil sfxPlaylist if more than 1 slot is filled
* Update SoundAsset.cpp
to stop git ci complaining, assetImporter........
* Update SoundAsset.h
* sfxPlaylist
-Fix: incomplete type error
-Added onAdd and onRemove to playlist
-SoundAsset getProfile define now returns playlist if the asset is a playlist.
* Update SoundAsset.h
-updated asset array to return playlist or profile depending on what the asset is
* SFXPlaylist working
-SFXPlaylist works
AudioChannelDefault gets its volume set to 0 for some reason and was throwing off making sfxPlaylist inaudible.
Still an exception when closing if using a playlist trips on line 355 of sfxSound
* Update sfxSound.h
* setSoundFile index null fix
* Update SoundAsset.h
* Update SoundAsset.h
* netstream safety in case of a null asset assignment
* Update sfxController.cpp
added safeties around a null playlist trying to play.
* Update with Az's asset err code changes
---------
Co-authored-by: AzaezelX <quillus@hotmail.com>
-Working multi arch compile
-Required assets now copy to the app bundle
TODO: Make the logic to wrap around whether its multi arch
-The changes in torqumacosconfigs.cmake are not required if we are only building one architecture, also if it is x86_64 we can drop min deployment target to 10.13
new global defines: TORQUE_LIB_ROOT_DIRECTORY and TORQUE_LIB_TARG_DIRECTORY for source location and target to build static libs, respectively
reassign location back to torqueConfig.h, torque.rc, and Info.plist to "${TORQUE_APP_ROOT_DIRECTORY}/source/ aka \My Projects\<apname>\source by request
add reloading state to asset tracking,
convert most asset.isnull() checks on over to skipping out unless the errcode is ::Ok, or ::UsingFallback
add more errstriongcodes to hook up
skip load<type> execution if the asset loaded state is ::Ok
dragforce for rigidshapes and children defaulted to a value it's own debuggers won't complain about out of the gate
removed duplicate invalidation for flying vehicle sounds causing network instability
removed redundant hovervehicle vars
downshift the exposure of the entry to rigidshape so it and vehicles all have the button.
fix moving them after they've become atrest failing to apply gravity untill collided with or applyimpulse is called on them
de-duplicate vehicle networking in reguards to rigid body instance variable transmission
Adds ability to control button margin of IconButtons
Adds ability to define button offset of window controls
Add mouse drag callback for window controls
Tweaks colors of gui slider control
Tweak to line split for text edit slider bitmap control
Tweaks to colors for text edit slider control
Tweaks to colors for Edit control
Tweaks to default menubar height