HeroEngine Quartz
(→HeroScript Language (HSL) and Foundation Framework) |
(→Quartz.a Enhancements) |
||
Line 110: | Line 110: | ||
*Change: SimuBugCatcher now sends HeroEngine.log file along with crash reports | *Change: SimuBugCatcher now sends HeroEngine.log file along with crash reports | ||
*change: Client and server script errors are filtered to remove duplicates, thereby preventing application slowdown and OOM conditions. if you clear script errors, it resets the duplication filter as well | *change: Client and server script errors are filtered to remove duplicates, thereby preventing application slowdown and OOM conditions. if you clear script errors, it resets the duplication filter as well | ||
+ | *change: updated/added the following required shaders : renderer/shaders200a/engine/otherroomhm_dim.fx, renderer/shaders200a/engine/otherareahm_dim.fx, render\shaders200a\engine\grass_for_heightmaps2_no_shadows.fx, render\shaders200a\engine\grass_for_heightmaps2_shadows.fx, render/ShaderTextures/envmapreference.dds, render\shaders200a\game\incllighting.fx, render\shaders200a\game\inclvariables.fx, render\shaders200a\game\lightpermutations.fx, render\shaders200a\game\tintpermutations.fx, render\shaders200a\game\metalpermutations.fx | ||
<br> | <br> | ||
Revision as of 20:50, 8 May 2014
Release: HeroEngine 2.5
Codename: Quartz
Internal Branch Versions
- Quartz: 2.5.13381
- Quartz.a: 2.5.13781
Release Dates: March 2014 - Present
Notes
Quartz is a major inter-release update to HeroEngine Sapphire. This release includes a number of major feature, functionality, and performance changes and improvements.
Among other major changes, alpha blended materials no longer automatically make a mesh non-collidable. This addresses both a consistency issue, and the case where a mesh has a combination of non-alpha blended and alpha blended materials, e.g.: a spaceship with an alpha blended force field around it. Collision, or lack thereof, is now driven purely by the collision or node type.
Major Feature Summary
The following is a list of major features expected to be included in this release and is not a guarantee of the availability of the feature in the final release.
Middleware
- Granny 2.9.23.0
Graphics
- Autodesk Max 2014 and Maya 2014 support - HeroEngine Art Pipeline 2014.1
Client / Editor / Server / Tools
- Dream Manager 2.0
- All client tools now support localization of all UI text
Billing
- Portions of the support for Micro-transaction Stores are included in this release, but are non-functional pending the enabling of additional back-end support. The billing related changes impact (though should be transparent to developers) the database, server, client, HSL and DOM.
Deployment/Patching/Installation Infrastructure
- This release will utilize portions of our new deployment and installation infrastructure updates, changes to which reflect our ongoing work to move to a more modern installation experience which will ultimately include support for torrent-based downloads, developer initiated deployment and differential content patches.
Obtaining the Release
- Source or object licensees contact your support list
- HeroCloud users stay tuned for deployment announcement
HeroScript Language (HSL) and Foundation Framework
New Features
- New: Timers now have an additional field 'timerTimeSource' for using local or server-coordinated time. This corrects an issue where client side timers could pause if the estimate for elapsed coordinated time was less than 0 when latency was very high. Default is coordinated time for backwards compatability.
- New: New builtin method on timers for setting the time source 'SetTimeSource'.
- New: HSL intellisense updated for added timer method and field
- New: Added field 'LODSettings' to classes '_Gr2WriteableInstanceProperties', '_HgmWriteableInstanceProperties' for an upcoming feature.
Enhancements & Corrections
- fix: account proxy nodes are now properly unloaded during seamless transitions
- fix: seamless transitions now properly unsubscribe the traveling account from spatial awareness and edit instance queues
- fix: when traveling non-seamlessly or logging out players are now correctly unsubscribed from spatial awareness for linked areas.
HeroBlade Editor and Client
New Features
- new: Autodesk Max 2014, Maya 2014 support
- new: HeroScript editor Compile All open scripts button
- New: Corresponding client HSL scripts have been updated to use the new time source where appropriate.
- new: auto logon option on login UI
- new: Debug Logging option on login UI
- new: Dream Manager 2.0
- new: HeroScript Editor task list now include script name, and, if applicable, messages from multiple scripts
- new: room creation UI option to select whether selected instances should be moved into the new room (default: true)
- new: HeroScript Editor was now saves and restores UI layout. previously, it was only using the framework as a docking manager. %APPDATA%//Local//%CLUSTER%//HSE2uilayout.xml
- new: context menu function to copy console output to the clipboard
- new: as the conversion of an HGM mesh, skeleton, or animation file from an older version to the current version on load can incur a potentially large performance penalty, these cases are now logged out to the HeroBlade error window. if necessary, the hgmupdater.exe command-line utility available in the 2014.1 art pipeline package can be used to convert and compress older files to the latest format
- new: as the conversion of non-pow2 sized DDS textures causes a performance penalty, these cases are now logged out to the HeroBlade error window. while this can also be a problem for non-DDS textures, non-DDS textures should only be used for UI, and should therefore comprise a far smaller subset
- new: HeroScript Editor task list now has per column sorting
- new: HeroBlade, Repository Browser, and Master Control Console now support localization of all UI text
Quartz.a New Features
- new: HeroScript task list now has an option to filter tasks to the current HeroScript file only
Enhancements
- change: max graphics update frame rate is now 125 fps (vsync effective 120 fps), because there’s no reason to run the graphics update any faster, and it will improve overall threading and system load and performance. simulation
- change: selected tabs are now LightSteelBlue instead of GoldenRod
- change: Area panel: combined Rooms and Room Visibility tabs
- change: floating panels now save their screen so it can be validated against position on load
- change: selected objects in the active room are boxed in yellow. selected objects in other rooms in the active area are boxed in teal. selected objects in other areas are boxed in red
- change: Area Panel “Outdoors is visible” to “Show Areas Sharing Environment Scheme”
- change: selected regions are now rendered as translucent cubes based on their color
- change: selected triggers are now rendered as blue translucent cubes
- change: selected pathfollowers are now rendered as teal translucent cubes
- change: alpha blended materials no longer automatically make a mesh non-collidable. this addresses the case where a mesh has a combination of non-alpha blended and alpha blended materials. collision, or lack thereof, is driven purely by the collision or node type
- change: material instance UI now prompts you to confirm if you reset it
Quartz.a Enhancements
- change: in order to address depth sorting issues, glowing, non-translucent materials are handled separately from regular opaque and translucent materials. they are now rendered in two separate passes (one pass for color, and one later pass for alpha glow). transparent + glow materials are placed on the transparent list in order to render with correct sorting. they are then rendered in two passes: once for color, and once for alpha
- change: mesh performance warnings are now on a debug switch (MESH_PERF_WARNING) default: off. this can be changed under Analysis => Rendering => Debugging options
- change: installer updated to .NET 4.5.1 on Windows Vista and newer operating systems (Windows XP is not supported by .NET 4.5). this is to address potential .NET compatibility, dependency, and installation issues.
- change: moved transform and viewport functionality from client graphics to active camera, so they are now per camera
- Change: SimuBugCatcher now sends HeroEngine.log file along with crash reports
- change: Client and server script errors are filtered to remove duplicates, thereby preventing application slowdown and OOM conditions. if you clear script errors, it resets the duplication filter as well
- change: updated/added the following required shaders : renderer/shaders200a/engine/otherroomhm_dim.fx, renderer/shaders200a/engine/otherareahm_dim.fx, render\shaders200a\engine\grass_for_heightmaps2_no_shadows.fx, render\shaders200a\engine\grass_for_heightmaps2_shadows.fx, render/ShaderTextures/envmapreference.dds, render\shaders200a\game\incllighting.fx, render\shaders200a\game\inclvariables.fx, render\shaders200a\game\lightpermutations.fx, render\shaders200a\game\tintpermutations.fx, render\shaders200a\game\metalpermutations.fx
Corrections
- fix: organizer drag scrolling is faster if closer to the top/bottom
- fix: reworked dialog for confirming area interlink for visual consistency & allowing for larger numbers of areas
- fix: physics data does not continuously update while scaling with the bounds gizmo anymore, only when complete
- fix: organizer multiselect behaves correctly with the shift key, instead of identically to the control key
- fix: set manual flag which allows for editing a label of a treeviewnode within repository browser and reset the flag after editing. Addressing crash 2686.
- fix: crash in GetNodeMaterialList() when called with invalid node (2694, 2695, 2696)
- fix: pathing should not early-out at short distances when simple direct test fails
- fix: camera behavior for OVERHEAD camera.
- fix: issue with path follower path rendering
- fix: camera false triggering issue
- fix: heightmap nodes snap to full resolution grid (.2 units) regardless of their resolution
- fix: bug that killed wireframes when anything else was using a "dim" effect.
- fix: VirtualStage crash while minimized
- fix: additional check for device ready on unminimize before allowing texture/model loads
- fix: safety check vs. bug 2731 (crash while rendering asset library tabs)
- fix: improved consistency in dynamic texture bank names
- fix: Added null check for crash 2752 when selecting things in the materal instance window.
- fix: when closing all scripts the history panel and functions and methods panel will clear themselves out.
- fix: stitching between heightmap nodes with different resolutions
- fix: GoToSelection across seamless boundaries
- fix: auto-generated enviro schemes Area and Water are written to the server when created
- fix: gui editor buttons that should not have been enabled were, they are now correctly hidden again
- fix: empty animation sequence name bug
- fix: Corrected Issues with fonts loaded from the repository
- fix: corrected bug with word wrapping and fonts while the player client was maximized.
- fix: inserted a NULL check around the GlobalPropBucketManager to help armor against bug #3128
- fix: HeroScriptError exception not being caught when function is not found in a script
- fix: function MaterialInstanceProperties.DisplaySelectedMaterialInstance to fix exceptions thrown when failing to parse a number
- fix: corrected bug with the heightmapgrid window not being movable.
- fix: null reference in PanelManager and condensed/removed unnecessary code
- fix: correct root path when changing local path
- fix: potential fix for the populate glyphs bug
- fix: Shutdown is no longer re-entrant causing a crash
- fix: Shutdown now correctly triggers Heroblade itself to cleanly exit
- fix: modified HeroBlade form closing code to integrate with the main update loop in order to fix a race condition between the two which resulted in a hang or crash on exit. Form closing is now automatically a two-stage process that integrates the signal to shutdown with the update loop handling.
- fix: stackoverflow on GUI error message caused by an opening { tag without a closing one. Fixed by santizing the error message and removing the '{' from the message
- fix: HeroBlade: asset type handling function was using incorrect casting on argument to determine what it was actually handling. also added bullet proofing to detect any actual issue in the future and prevent exception
- fix: HeroBlade: elapsed frame time is used to handle things like camera movement. this value was was hardcoded to fix some old bug which I cannot replicate; however, i assume this was probably due to choppy frame rate. this has now been fixed to smooth the elapsed frame time over the last n frames (currently, n = 30)
- fix: HeroBlade: elapsed frame time was min 0.001f only if NaN. It’s now also min 0.001f if the returned value is < 0.001f
- fix: HeroBlade: main loop re-uses multiple data arrays every frame instead of allocating / gc-ing every frame
- fix: render target and depth stencil textures are no longer reported to the texture manager on destruction, preventing a false error message
- fix: Scripts that are deleted are shown in teal in the pick list
- fix: if you change your display layout or resolution between saving a layout or restarting, you could end up with a window that was 1 pixel onto the edge of your display, making it impossible to grab and move. if more than half the window isn’t on the display, we move it over so it is
- fix: if you changed monitors or the screen name changed between saving a layout or restarting, you could end up with incorrect window position or layout. we now validate against all monitors if we can’t find the one we expect
- fix: if the window is maximized, we just check to make sure the monitor is valid instead of wasting time on validating positioning information
- fix: if the window has been resized very small, which could happen due to driver change, etc, just maximize the window on restore
- fix: MIP debug texture was incorrectly locked before being filled by a separate api code path. i have no idea why this doesn't fail all the time way down deep inside the api, and it probably screws up silently without warning
- fix: added additional safety code to attenuation map fill function because the output mapping from the channel we expect to use (alpha), to the channel that is used for input into the texture is not documented. replicate the same value to all channels ensures that we always pickup the correct value
- fix: restored pictureHELOGO_DoubleClick handler in firestorm login to support debug logging during logon process. this had been inadvertently clobbered during the UI reskinning
- fix: added exception handler for invalid firestorm.net login info
- fix: firestorm.net minor control alignment issues
- fix: attenuation volume map exceeds 1.0 for some number of values. changed from single channel u8 which was clamped to single channel float16. This fixes an issue with hair rendering
- fix: adapter display modes are now correctly returned
- fix: hidden light updates have a costly DPVS and visibility update
- fix: MaterialBucket::AddRenderNode has a combinatoric loop that was called even if a light was hidden
- fix: #ifdef’ed some light count info so it only impacts HeroBlade
- fix: error reloading modified local shaders due to incomplete local path
- fix: local shaders are now automatically reloaded if changed
- fix: organizer folder icons
- fix: memory leak in determination of mesh file type
- fix: multiple memory leaks processing and handling mesh files
- fix: crash double-loading mesh file info
- fix: under high latency, shader code that required compilation could be duplicated due to multiple inflight server requests. this would cause the shader to fail to compile
- fix: issue in node base where even though it didn’t have a parent, or the parent was removed, parent instance wasn’t initialized correctly or cleared
- fix: node “frame last visible” was not correctly initialized. this could lead to extra processing / visibility, or to inadequate processing / visibility
- fix: initial terrain painting states could be wonky
- fix: base shader permutation key wasn’t initialized. this could cause an error in determining whether a shader permutation key had been created
- fix: depending on visibility order and/ or garbage collection due to materials eventually being evicted: 1) regular shader might be called instead of custom shader, or 2) custom shader might be called instead of regular shader, or 3) some effects may think they need to be created when they already exist
- fix: rewrote the local shader directory monitoring code (again) to be more robust by moving to a manually driven low level win32 overlapped IOCP interface, instead of using the event-based high level win32 interface that is prone to not working
- fix: detection of special hair effect came after general setup of effects
- fix: Keybinds for main menustrip were also interpreted by input system
- fix: Main menustrip alt+(key) is not underlined because we only support Alt+Enter (show property window) and Alt+F4 (close)
- fix: Dynamic detail textures/models page was referred to as 'Grass' in terrain panel. (also fixed the internal variable naming)
- fix: camera speed control and movement now uses smoothed frame rate instead of instant frame duration
- fix: camera speed control no longer uses magic numbers or coincidental values, and is now controlled by min and max of the UI control itself
- fix: slowest camera speed is now higher, and highest camera speed is higher still
- fix: there is no longer an issue with consistency of camera speed, as the value is stored and updated atomically through the UI control, and no longer shadowed
- fix: asset library now uses new art for folders
- fix: asset library now has an icon for assets
- fix: asset library tree would show open folder if the folder contained no sub-folders, regardless of it’s open state
- fix: asset library tree could become confused with regards to whether the entry was a folder or asset entry
- fix: asset library tree folders vs items are now differentiated based on the existence of a valid fqn
- fix: HeroScript Editor Toggle Bookmark now correctly named Add Bookmark
- fix: scene analysis panel: removed old options section
- fix: scene analysis panel: move display of textures below list of textures so it’s more intuitive than being above the list of textures
- fix: scene analysis panel: laid in splitter panels so you can resize each section as desired
- fix: add library dialog tab order fixed
- fix: add library textbox now defaults to active control
- fix: asset library: instead of telling you that the you tried to create a library that already existed, it was logged out to a file
- fix: asset library: you can no longer create duplicate categories, and are given an error message
- fix: asset library: add library name is trimmed, and checked for being non empty/null
- fix: new script naming dialog is titled based on the type of script / XML you're creating, so you're not like, "where am i? how do i work this?"
- fix: animation control buttons were at the edge of, or slightly beyond, the panel they were contained in
- fix: animation panel: fixed ui settings and added a base panel in order to fix issue where scrollbars wouldn’t appear when it exceeded the size of its visible container area
- fix: Asset Library “Edit Note” is only active when you have a single asset selected
- fix: Asset Library option is now called "Add Top Level Category" to indicate that you cannot nested categories
- fix: asset grid is no longer hardcoded to put the Particle root into the tree if it’s filtered out
- fix: Area panel label text color was incorrect
- fix: Area panel wouldn’t create scrollbar if it exceeded its container size
- fix: tore out and re-implemented particle creation sub menu to fix some weird C# /resx bug
- fix: HeroScript Editor task list columns are correctly labeled and spelled out
- fix: HeroScript Editor errors are no longer stored on a per script basis and swapped into the task list. the task list now stores the errors themselves, and the script clears them when re-compiled or closed
- fix: multiple fixes for room, environment scheme, path creation, and other places where string input could have trailing whitespace
- fix: null exception in panel manager loading panel that’s not found / valid
- fix: shader builder IOCP handles not initialized to invalid (or valid) if you started up and closed HeroBlade without logging in
- fix: loading fallback for invalid HeroBlade window placement made the window the size of the display, but not truly fullscreen
- fix: if a floating panel was on a display that was resized, or display that was removed or changed, it could appear offscreen. it now is placed on the primary display
- fix: terrain texture layer texture layer UI no longer gets in a weird layout state. takes advantage of whatever height the panel is instead of being restricted. can be resized and will automatically display scrollbars if needed
- fix: terrain panel: remove crazy scrollMePanel and replace with correct settings
- fix: terrain texture layer Remove texture button would incorrectly update its state if it did remove a texture
- fix: HeroScript Editor task list could fail setting focus to a script with an error because it didn’t go through the docking manager
- fix: water/mirror selection box could be double transformed, resulting in incorrect placement
- fix: water translation gizmo scales correctly
- fix: rotate gizmos not drawing correctly, setting duplicate render states, incorrect values
- fix: cleaned up gizmo translate render, removing dead world setTransform
- fix: rotate gizmo now scales with distance like other gizmos. previously, it could also “pop” in size after rotating
- fix: rotate gizmo could generate NaN’s
- fix: rotate gizmo no longer has a max distance in which it can be used, so it now works like the other gizmos
- fix: potential crash cleaning up allocated nodes in world layers since the loop logic could use a stale iterator
- fix: if the granny mesh cannot be loaded due to corruption or being a version newer than what’s supported, a NULL pointer is passed back to prevent crashing
- fix: dynamic detail nodes are now cleaned up when the owning terrain is destroyed. previously, they were placed in a broken, unbounded pool, in an attempt to reuse the allocated nodes
- fix: particle pool is appropriately purged with other systems in AreaSpec::Purge
- fix: if you dock wider / taller a panel with a group that is thinner / shorter, it will resize the group so you don’t have to then do it yourself
- fix GUI Editor Start Dialog: Class selection drop down box populates the items list on open instead of instead of only on list box drop-down
- fix GUI Editor Start Dialog: Resized controls to provide slightly more white-space on either side
- fix: GUI Editor Panel: re-did the way that the popup GUIXML organizer populates its data so that the filtering of the main organizer does not effect it
- fix: HSE Intelliprompt: Crash on uncaught exception when intellisense is querying the DOM for information about the field and the field gets removed be another user elsewhere (#3664)
- fix Interlink Confirm Dialog: changed \n to \r\n so that the area names would be separated by a new line.
- fix: material instance UI updated with a number of usability and bug fixes
- fix: path panel buttons update only once when selections change, preventing race conditions with event dispatch on button press.
- fix: path panel buttons properly change their enabled state when paths and waypoints are selected, deselected, added or removed.
- fix: multiple custom / override material fixes
- fix: a custom material could override the same material on another object
- fix: an overridden material is now only setup if changes are actually made to the base material
- fix: potential leak of overridden materials
- fix: multiple fixes to custom shader loading and handling
- fix: physics, waypoint, particle, lightning, and flare node selection weren’t rendered using seamless transform
- fix: improved mesh, skeleton, etc loading error and warning messages
- fix: if you log on again, the world list is cleared to remove any confusion or stale data
- fix: reloading a granny skeleton (even if it’s wonky) will no longer crash due to an existing skeleton being in use
- fix: physics are properly generated when objects are loaded for the first time. This also corrects physics not being generated on the client correctly at all when using the 'build and publish' and 'test build' buttons in the physics panel.
- fix HeroAssetGrid: Children no longer filtered out when selecting assets
- fix output the message to let the user know a file failed to retrieve due to its size
- fix: scene analysis panel no longer defaults to really long, and now has a scrollbar if needed
- fix: Create Particle dialog is now moveable, and no longer appears in the taskbar
- fix: Paths panel: when you add a new waypoint, it’s now scrolled into view
- fix: Paths panel: now contains splitters and such so you can resize the sections
- fix: New HeroScript Template dialog: now has title and is moveable
- fix: New HeroScript Template dialog: fixes layout and adds titles
- removed: no longer applicable MIP bias from Render panel
- fix: creating a path new also displays the Paths panel
- fix: scale gizmos and translate gizmos could stop scaling
- fix: adding a new library to the asset library initially has the wrong icon
- fix: trigger node and pathing node selection no longer change the look of the whole screen
- fix: cloud layer selection is now always there. previously, it could be selected and active, but not highlighted
- fix: region nodes no longer cause fullscreen color issues
- fix: region, path follower, and bone tracker nodes now respect render filter flags
- fix: when creating a new HeroScript, the description is now persisted; and, displayed in history, etc
- fix: animation sequence change and problem listboxes had invisible entries
- fix: faces of selected regions and trigger nodes are rendered with their main color. their edge colors vary based on active room, active area, or other area
- fix: particle spec now says “MESH”, instead of “GRANNY”. although, “GRANNY” is still maintained internally for backwards compatibility
- fix: terrain panel texture “Remove” button is now correctly enabled when the last texture you clicked on was the default texture
- fix: particles are now correctly influenced by the environment scheme in the room / area of their emitter, and not the environment scheme of the active area
- fix: chat "find" selection set to chat window default colors for unselected text
- fixed AssetLibrary: removed duplicate code/ensured that the library gets saved out to maintain the removal of a category
- fix: incorrect transform caused dynamic detail meshes not to render across seamless boundaries
- fix: incorrect distance culling calculation caused dynamic detail meshes not to render across seamless boundaries, and/ or to fade out too quickly
- fix: Node::GetSeamlessInverseTransformWithoutScale wasn’t actually seamless
- fix: prevent duplicate nodes from being placed on the world layer list
- fix: resizing the left or top of a panel no longer activates docking
- fix: floating panels cannot be resized smaller than their titlebar
- fix: more advanced panel resizing logic to address issues of “am i resizing?” vs “am i moving?”
- fix: it was possible to dock a panel to an invalid docking point
- fix: terrain panel tab highlighting now uses custom color setup and highlights tabs correctly
- fix: potential crash drawing custom tabs on terrain panel
- fix: all tab controls everywhere now use custom rendering
- fix: dynamic detail billboards could be clipped or fade too fast
- fix: when a player seamlessly transitions to a new area, clients that are no longer visible to that area are properly unsubscribed from replication.
- fix: floating panels now have their initial size and location cached off so they don't automatically enter docking when they are created
- fix: you can run on hidden terrain across a seamless boundary. this should also resolve some number of other issues involving hidden assets not loading physics
- fix: all physics actor initial data is now initialized to zero
- fix: a number of physics singleton factories weren’t wrapped correctly, and could be called while being null
- fix: duplicate / namespace-specific copies of game scale and inverse game scale could get out of sync
- fix: removed / variant duplicate math functions and constants so physics is more consistent with other systems
- fix: Field types unsuitable for replication (such as Timers) are now no longer allowed to have replication-related data changed through the CLI or DOM Editor.
- fix: When a player enters an area seamlessly, the area edit command queue subscription flag is carried over from any preexisting reference server player object to the new authoritative object
- fix: HeroBlade UI layout and rendering issues on Korean and other Asian Windows versions
- fix: HeroBlade UI layout and rendering issues due to Windows control panel scaling changes
- fix: ungrouped, individual panels were saved by title instead of internal name. this could cause a failure to find the panel when reloading
- fix: login UI relied on magic button text to allow world login
- fix: Environmental scheme blending now appropriately renders across seamless bounds for areas that share one or more common global environmental schemes.
- fix: Environmental schemes now appropriately preserve 'time of day' and 'time of day delta' when transitioning seamlessly or non-seamlessly.
- fix: NULL pointer crash in dynamic detail building due to NULL index buffer when minimized or unable to obtain graphics resources
- fix: special UI panel windows (e.g.: HeroScript Editor history, task, etc) no longer incorrectly uncheck themselves in menus
- fix: the firestorm queue that is used to store and process elements that come in while the client is minimized now continues to check for minimized state before processing each item. this fixes the case where you become minimized immediately after restoring
- fix: we don’t call the firestorm pump if we’re minimized. this is on top of existing minimized window detection in firestorm
Quartz.a Corrections
- fix: potential NULL room spec on particle node (#3823, #3824)
- fix: gizmo bounds node (Width, Depth, Height (7)) could be clipped due to incorrect depth setting
- fix: gizmo bounds node (Width, Depth, Height (7)) coloring
- fix: in oder to address an input issue on some international keyboards, we no longer filter the ALT key if the chat or console input controls have focus
- fix: multi-sample mode changes are ignored if they are already set to what’s requested
- fix: direct3d device creation can modify creation parameters, so we now give them a copy instead of our originals
- fix: remove the depth stencil surface during glow pass since it’s not needed, and the surface type can conflict with multisample settings
- fix: HDR rendering issue with conversion from multisample buffer
- fix: All actions performed on global enviro schemes from the Environment Panel or script will now properly be applied to all locally loaded copies of the scheme for all loaded areas on the client.
- fix: cloud layer vertex buffers are now correctly marked as write-only. this could be a performance issue
- fix: vertex buffer creation code that flagged default pool buffers with problematic flags was incorrect
- fix: dim room mesh effect, or dim area mesh effect, could be applied to heightmap, thereby causing a rendering error
- fix: dynamic detail performance regression
- fix: dynamic detail clipping regression
- fix: layout of a floating window on the non-primary monitor might not be saved correctly (we now query screen ownership based on floating location instead window)
- fix: invalid projection matrix could be generated by billboard particle point node if the depth bias was set to zero (default: 1)
- fix: math regression that caused issues with physics rotation
- fix: fixes an issue where cached render state logic was incorrect. this could lead to rendering with incorrect / uncommitted effect state
- fix: fixes an issue where only the first pass in a rendering effect was called, even if there was more than one pass
- fix: heightmap depth factor could be incorrect as its calculation is dependent on non-guaranteed ctor initialization order
- fix: render panel camera controls couldn’t be manually updated to move / rotate the camera since they were reset to current values every frame
- fix: render panel camera controls were updated overly aggressively from heroblade’s main loop even when the camera didn’t move or rotate
- fix: heroblade incorrectly determined changes to GetCameraLookAtTarget and overly aggressively updated render panel camera controls
- fix: a number of places were assuming color write enable state. they now save and restore state if they change it, instead of explicitly setting it when they’re done
- fix: character node duplicate call to render scene clear light modulation
- fix: glow materials would not render correctly when occluded by some types of visuals, e.g.: SpeedTrees, dynamic detail objects. and, could render incorrectly depending on draw ordering
- fix: various logical rendering issues due to skydome materials previously being a type of glow
- fix: mesh materials would not check for overrides until after requesting a render node. this forced render nodes to recheck the state, and potentially redo the whole process internally. now, material overrides are checked upfront and the logic is simplified
- fix: mesh render node configuration would use a temp instance of a render node, before requesting the actual render node, and then overwrite the actual render node with partially incorrect data
- fix: requesting a render node now requires the caller to pass the material in, and not just guess or hardcode. this centralizes handling, removes duplicate code, and prevents errors due to assumptions
- fix: skydome rendering would arbitrarily change alpha blending mode without restoring it
- fix: conflicting HLSL shader fx state vs C++ effect state could cause rendering issues with dynamic details. shaders have now been cleaned up to remove these states
- fix: dynamic details would change render state, and then set it back to arbitrary values. it now saves and restores render state
- fix: under some circumstances, post-bucket render was not called. this could leave render state in a potentially unknown setup, or cause cleanup to not occur
- fix: removed unneeded render state commit from prepare effect. commit is only needed after the effect has begun
- fix: render scene now saves and restores alpha test state, instead of arbitrarily resetting only under some conditions
- fix: render scene could call pre-bucket render and post-bucket render on completely different nodes, or completely different types of nodes
- fix: node pre-bucket render is now called after the effect is setup. this fixes the issue where the node wants to make changes that override the basic setup
- fix: selected convex region node hulls are rendered correctly as a shaded hull. and, the bounding box of the hull is rendered in outline
- fix: backoff on the overly aggressive minimized HeroBlade window check to allow HeroScript Editor to request files, but try not to allow Direct3D 9 to cause device lost problems with resources
- fix: if you abandon changes to a HeroScript, any errors or warnings are removed from the task list
- fix: scale gizmo could be incorrectly occluded by objects in the scene
- fix: bounds gizmo (width, depth, height (7)) was incorrectly scaled and depth sorted when used with water / mirror
- fix: billboard / grass dynamic detail nodes could be incorrectly clipped both locally, as well as across seamless boundaries
- fix: cubic environment / reflection map math was not correct
- fix: cubic environment / reflection MIP mapping was incorrectly disabled
- fix: cubic environment / reflection addressing was incorrect
- fix: moved cubic environment / reflection map calculation from pixel shader to vertex shader, which will make things faster
- fix: it was possible for the local shader name to be incorrect due to reading number of bytes instead of number of unicode characters
- fix: updating a shader that was a #include dependency of other shaders, could cause the other shaders to fail to recompile
- fix: useless self-assignment to material instance cache list
- fix: cleanup / simplify material caching code
- fix: cached material instance list is cleared if mesh is updated
- fix: material instance list is regenerated immediately upon opening material instance UI, in order to make sure that the list is up to date based on any underlying data changes
- fix: When a package fails to AutoApply it will no longer try to RollbackWorldAlterations repeatedly
- fix: replaced calls to obsolete windows registry access functions with their Ex counterparts in order to support running on all targeted platforms.
- fix: request for non-existent resource in material instance UI could cause NULL exception (3867)
- fix: NULL exceptions due to calling material instance UI when there are no associated materials
- fix: dynamic details could remain on world list after being stale / recycled
- fix: dynamic detail “bypass distance” on terrain panel implied that it bypassed the dynamic distance checks. this was not the case, as it only toggled the dirty flag. “bypass distance” now sets the dirty flag every frame, and ignores distance calculation and other “no recalculate” or “no draw” optimizations
- fix: dynamic detail “bypass distance” switch is limited to the editor client
- fix: dynamic detail nodes contained a “purge” function, which, if called, would delete the node itself. since the nodes are pooled, this would create orphaned pointers in the node pool. purging a dynamic detail node causes itself to return itself to the pool manager
- fix: lightnode repeatedly updated visualizer vertex data with same data. this now occurs only once
- fix: lightnode member functions not declared virtual. this could cause problems when called through a base class
- fix: unneeded scissor-rect tweakable from code and UI which was causing lighting problems
- fix: set dynamic detail UI list colors to be black
- fix: a dynamic detail node could be recycled between the time it was submitted for visibility testing, and when it was actually rendered and no longer associated with a heightmap. since this orphan contained bad data, it could cause artifacting or a crash. we now just ignore the attempt to render it
- fix: dynamic detail settings hue variation, saturation variation, brightness variation, and wind are not applicable to meshes. they are now hidden when the mesh list is active, and displayed only for billboards. previously, they were appropriately disabled / enabled, however, since there was no visible UI change in their accessibility, this was confusing
- fix: null check in dream manager creating user
- fix: added null checks around node updates (3879)
- fix: terrain helpers (slope limit indicator, steepness, brush influence, etc) are now rendered after post processing
- fix: dynamic detail mesh rendering across seamless
- fix: dynamic detail billboard divide by zero
- fix: dynamic detail mesh invalid data building concatenated meshes
- fix: some inherited functions in dynamic detail were not marked virtual, which could cause problems when called through a base class
- fix: various instances where heightmaps were incorrectly calling between instance and static functions, or referencing static variables in instanced functions
- fix: when an area / heightmap dynamic detail channel is cleared of a billboard or mesh, the channel data is cleared. this fixes the issue where you couldn’t clear the data from a channel
- fix: clear uninitialized dynamic detailUsage array to false on heightmap creation
- fix: a single dirty dynamic detail flag was used across all heightmaps. if you had more than a single heightmap, the dynamic detail’s would not update correctly. this could also cause editing of dynamic detail on one heightmap to cause other heightmap’s dynamic details to get into a partially updated state
- fix: channel instances now track the sequences playing on them for a given animation sequence spec in order to prevent recursive fallbacks or re-entry. if this occurs, a single error is logged out to the console
- fix: player client new displays correctly on scaled or high DPI UI's
- fix: several animation UI components didn’t have resizing or layout flags set correctly, which would cause controls to be clipped or not appear
- fix: fog disabled and restored around debug geometry rendering
- fix: HeroValueType::getUltimateType now properly returns HF_HEROCLASS for 'class of' fields and they are no longer treated as collections.
- fix: HF_HEROCLASS is now marked as a valid field type for CLI commands which modify replication settings.
- fix: restructured and simplified dynamic detail processing loop, and implemented a number of optimizations
- fix: recompiling a script with errors could crash the HeroScript Editor
- fix: terrain panel falloff selection rect, and spacing of falloff and shape tools
- fix: heightmap vertex selection pyramids appear correctly rendered
- fix: dream manager data grid view text is now black
- fix: any operation that caused heightmap regeneration, regridding, etc could overwrite Direct3D buffer memory in one of several different locations
Player Client
This section includes Player Client specific changes. General client changes are listed above under HeroBlade
New Features
- new: player client login UI with “Remember Me?” support and art. This information is stored in the registry under HKCU/Software/HeroEnginePlayer
Corrections
- fix: The player client now handles ALT key combinations
- fix: login UI was way larger than displayed background, even though it was automatically resized
- fix: added owned device context flag to prevent issue with incorrectly drawn or missing windows elements
Repository Browser
Corrections
- fix: overlap at the bottom of the file transfers window in Repository Browser
- fix: crash(2741) when copying files via drag and drop and then attempting to copy files before that finishes.
- fix: settings window is movable again
- fix: settings window is slightly larger to correct some text being cut off.
- fix: Local Directory button is no longer cut off
- fix: The pause buttons for downloads and uploads are no longer cut off
- fix: The pause/play icons have been updated to match the new color scheme.
- fix: The max uploads slider has the proper range, 20, now
- Fix: files in the repository list will have the correct colored background
- fix: if you change your display layout or resolution between saving a layout or restarting, you could end up with a window that was 1 pixel onto the edge of your display, making it impossible to grab and move. if more than half the window isn’t on the display, we move it over so it is
- fix: if you changed monitors or the screen name changed between saving a layout or restarting, you could end up with incorrect window position or layout. we now validate against all monitors if we can’t find the one we expect
- fix: if the window is maximized, we just check to make sure the monitor is valid instead of wasting time on validating positioning information
- fix: if the window has been resized very small, which could happen due to driver change, etc, just maximize the window on restore
- fixed: removed show full path button. This information is now showed in the download/upload list directly under the 'Full Path' column
- fixed: drag and drop from local file view to local file view to just do nothing instead of erroring out when trying to copy
- changed: removed message box from popping up when attempting to copy repository file view to repository file view (seemed a little ridiculous to pop up a box for that)
- fix: Open With on repository files could cause a crash
- fix: repository tree and file view windows fully cleared when logging out of a server, or into a new or different server
- fix: changed "misc info" to "path" and removed show-path checkbox because all it did was swap the column contents
- fix: resized window so it's not overly small on startup
- fix: attempting to synchronize / upload from a local directory with no files caused a crash
Server Processes
Enhancements
- change: Renamed the server-side HeroScript Editor API's dll loading methods to accurately reflect the documented/published API (e.g. was 'getInterface'/'releaseInterface'; now is 'getHSLInterface'/'releaseHSLInterface').
Corrections
- fix: DudeServer Crash caused from attempting to report a replication error on a node when the the node was associated with the ReplicationReciever that uses the ClientTracker since there is no GOM present for that particular receiver
- fix: physics crash due to bad cooking data
- fix: corrected typos with internal error messages
- fix: debug memory allocator correctly returns values for calloc
- fix: seamless transitions now properly unsubscribe clients from the traveling account's replication group
Master Control Console
Corrections
- change: Added tracking for when users connect/disconnect. Connected users can be seen with the show users option from the view menu.
- change: When issuing a shutdown the connected users will be displayed as part of the warning message
Quartz.a Corrections
- fix: reporting very large performance numbers no longer causes a crash