IMPORTANT

Updated the License Agreement on May 6, 2020.
https://planetside.co.uk/terragen-4-eula/

For commercial use a Terragen 4 license must be purchased (see License Agreement for details).

Licenses for educational use are available. Please contact us for information.


CHANGE LOG:


=============================
Build 4.9.05 (Frontier Build)
=============================

Bug fix: RTP was not rendering displaced surfaces correctly in 4.9.04 Frontier Build.

Surface Layer's new "Direction limits" tab has a "Direction key" parameter that allows you to choose between "Final normal", "Terrain normal" and "Planet/object normal", similar to the slope key on the slope limits tab.

Distribution Shader V4 has a new "Direction limits" tab that is similar to the one in Surface Layer, and the other constraints tabs have been relabeled as "Altitude limits" and "Slope limits".

=============================
Build 4.9.04 (Frontier Build)
=============================

Command line option "-camera".

Command line option "-noloadobjects". This tells Terragen not to load any objects automatically. This can be used when you want to load a project more quickly and don't need the objects to be loaded during the session.

The MDD reader in object reader nodes can work with files larger than 2Gb.

The MDD reader in object reader nodes can use the options on the Sequence tab, including Loop, Ping Pong and Frame Offset. There are options on the Sequence tab that let you choose to apply these options to either the file sequence, the MDD reader, or both. "Apply these options to file sequence" is ON (checked) by default (and is harmless if not using file sequences). "Apply these options to MDD reader" is OFF when loading old projects so as not to change their behaviour, but is turned ON automatically when creating new object readers (and is harmless if not using the MDD reader).

The MDD reader uses frame indexing based on 1 (the first frame in the MDD is considered to be frame '1', not '0') whenever "Apply these options to MDD reader" is ON. However, to render older projects without changes the first frame in the MDD is considered to be '0' (the old behaviour) whenever "Apply these options to MDD" is OFF, which it defaults to when loading old projects. For example: If "Apply these options to MDD" is ON, the MDD's first frame will appear on rendered frame 1 if Sequence First/Last/Offset are set to 1/240/0, or will appear on rendered frame 1001 if Sequence First/Last/Offset are set to 1/240/-1000. If "Apply these options to MDD" is OFF, then the MDD's first frame will always appear on rendered frame 0 and the Sequence First/Last/Offset parameters will have no effect.

Object Space shading and texturing is now supported by the renderer. You can use this with new features that have been added to Transform Input Shader and Transform Merge Shader and with the brand new Get Point node. Object Space texturing allows you to go beyond UVs but still shade independently of the object's location, scale or rotation, unlike World Space texturing. Object Space works on instanced/populated objects as well as non-instanced objects, and can be used on any kind of object, including Planets, so it's easier to create effects like polar ice caps, or you can enhance the shaders of your imported objects in all sorts of ways.

Transform Input Shader and Transform Merge Shader have new options that allow you to apply textures in object space, instance/object position space, and other options to reset the texture space if it has been transformed or warped by downstream nodes. One possible use for the "Instance/object position" mode is to map textures to populations while keeping the sampled colour constant within each instance.

New function node: Get Point. When used in shader networks, the Get Point node gives you coordinates of the point being sampled, either in texture space, object space or world space, with some sub-variants in each case. Get Point can be used as a general replacement for Get Position in Texture, Get Position in Geometry, and Get Position, but the additional options give you access to information that was not available before. https://planetside.co.uk/wiki/index.php?title=Get_Point

New function node: Get Object Vector. When used in shader networks, the Get Object Vector node gives you information about the object or instance being shaded or displaced. It can return a 3D vector containing the object's position (including an option for the anchor point if the object is an instance), size (either the size of the bounding box or the scale factor of an instance), and rotation information via direction vectors. One possible use for this node is to apply random variations to every instance in a population by feeding the instance position through a Perlin 3D node. https://planetside.co.uk/wiki/index.php?title=Get_Object_Vector

Surface Layer has a new tab "Direction limits'. The altitude constraint and slope constraint tabs have been renamed to "Altitude limits" and "Slope limits". Direction limits can be use to simulate snow accumulating more surfaces that face in a particular direction, or moss that grows on one side of a tree, etc.

Heightfield Shader's built-in fractal warp feature has some optimisations which allow it to calculate faster, which can improve render times in scenes using heightfields.

Fractal Warp Shader has some optimisations which allow it to calculate nearly twice as fast, which can improve render times in some scenes.

RTP uses a new code path when shading the triangles that have been generated from displaced surface (e.g. terrain), which allows the BSDF to be different at each sample, not constant within each polygon.

Bug fix: Populator's tint features were not being applied in RTP renders.

Some changes to the appearance of node network plugs or connections on disabled nodes.

The File menu has been rearranged slightly, putting "Revert To Saved" in the same section as the other items related to opening files, and there is a separator bar above "Save".

In atmosphere and cloud nodes, "Fake dark power" has been relabeled as "Fake terminator darkness", and the slider for "Fake dark sharpness" has a range from 0 to 32. The are just UI changes; the functionality has not changed.

Clarified some of the text shown when there are errors related to "-renderlayer" and "-rendernode" command line options.

======================
Build 4.8.64 (Release)
======================

Bug fix: The RTP status text was not updating in the GUI when the RTP finished rendering. This bug first appeared in build 4.8.62.

On Windows this version is built with a newer version of the Visual C++ compiler, and we have seen a small improvement in render times compared to 4.8.23.

======================
Build 4.8.62 (Release)
======================

Important bug fix: There was a bug in the rendering of clouds of type Easy Cloud and Cloud Layer V3 that added significant noise in some situations when rendering with the Path Tracer. The Path Tracer is not used to render clouds directly visible to the camera, but nevertheless their appearance was altered wherever the clouds were occluding surfaces (e.g. terrain or objects) that were rendered by the Path Tracer. In a typical landscape scene this could add a strong discontinuity in the noise levels from above the horizon to below the horizon, and made the adaptive sampler work harder to resolve the noise in the affected areas, usually increasing render times. The bug presented itself only when rendering with the Path Tracer, not the Standard Renderer. Cloud Layer V2 and Planet Atmosphere were not affected in any render mode.

Notice: We advise users to adjust render quality settings on scenes that were affected by the cloud rendering bug. Now that the bug has been fixed, renders can take longer in scenes that used high AA or high "Voxel scattering quality" to compensate for the old behaviour. Adjusting render settings back to normal levels should result in higher quality images and shorter render times. A good range for "Voxel scattering quality" (in GI Settings) is between 200 and 400 when the image is dominated by clouds directly visible to the camera, and 100 is better when clouds are mostly for secondary effects.

Bug fix: The program was crashing in some situations when using a license server through a configuration file on a network path.

Bug fix in the Free Non-commercial edition: Parameter views for object reader nodes (OBJ Reader, TGO Reader etc.) were taking up more screen space than they should, because they were missing the "Mesh Modifiers" tab and this caused the tab's contents to be displayed between the two main tab groups.

=============================
Build 4.8.52 (Frontier Build)
=============================

Fixed a bug in the Path Tracer that sometimes caused the Robust Adaptive Sampler to output bad pixels if nearby pixels were sampling 'holdout' objects. The bug might have caused problems in other situations too.

Experimental changes to improve the Z-depth rendering of items drawn in the 3D Preview. This potentially affects the drawing of bounding boxes, wireframes, shaded and textured objects, and some shader-specific drawings (e.g. the dotted lines of a Simple Shape Shader). Most of these items will be hidden behind other items according to the Z-depth buffer in the view, except for shader-specific drawings and some special objects which are always drawn on top to maintain visibility. Please give us feedback on the new behaviour so we can further refine it.

An experimental solution to an occasional problem where the 3D Preview would become unresponsive to some types of interaction.

Bug fixes to the visual 'disabled' status of node outputs and connection lines in the Node Network.

Other internal changes that are not meant to affect outward behaviour.

======================
Build 4.8.23 (Release)
======================

Compatible with Sky Paint nodes exported from Terragen Sky Early Access build 2024-12-06.

=============================
Build 4.8.18 (Frontier Build)
=============================

== Support for Sky Paint nodes exported from Terragen Sky ALPHA ==

TGD and TGC files that have been exported from Terragen Sky ALPHA build 2024-11-15 with Sky Paint nodes can be loaded into this version of Terragen 4. Sky Paint is still a work-in-progress and is expected to be made available in Terragen Sky Early Access before the end of this year.

== Threading ==

We've removed a hard-coded maximum of 64 threads per render. This allows utilization of more than 64 cores/hyperthreads on Windows 11, Windows Server 2022, Linux, and Macs with more than 64 cores. Older versions of Windows may not benefit.

The Advanced tab on the Render node has a "Limit threads" checkbox. By default it is OFF. From now on the "Maximum threads" parameter will be ignored by default, and threading will be decided by other factors: the number of cores and hyperthreading detected when the app starts (which maybe overridden in Preferences), and command line argument if used. The render node's "Maximum threads" parameter can be re-activated if necessary by enabling the "Limit threads" checkbox (API name "enable_thread_limiter"). However, the command line threads argument will always take priority if used.

== Bug fixes ==

Made some changes to the XML file reader to allow custom elements to be nested within custom elements. (Custom elements are used by some nodes to encapsulate data.)

Fixed a bug in the XML file reader when custom data exists in a node that could not be created because it's an unregistered/unknown class: An earlier object could be incorrectly called to handle the custom data, which is bad if the two classes both try to handle the same element or content.

== Linux render node fixes ==

The Linux render node ships with a copy of libpng12 because this was a missing dependency on some systems.

== Plugin API additions ==

New function trRenderingInterface::NumThreads. This may be useful for plugins that do multi-threaded work in OnAddToRender.

New function trClassPool::AddClassNameRedirect. This is useful if we want to change a class name and continue to support old files.

New functions trBase::XMLFilters. Gives access to an API that allows some control over which children are written to an XML file. This API may be extended in future.

=============================
Build 4.8.12 (Frontier Build)
=============================

== General ==

We've fixed some issues related to the Progress dialog and application stability with threaded operations.

Windows only: Some compilation settings have been changed which improve the speed of some shaders and heightfield operators.

== Clouds ==

We've improved the speed of interacting with scenes with cloud layers, especially when there are many layers. There was a bug that would unnecessarily invalidate some caches and cause voxel buffers to be recalculated when another cloud layer or atmosphere was changed.

== Heightfields ==

Heightfields can be exported to 16-bit TIFF and 16-bit "RAW" files that are compatible with Unity and Unreal Engine. The Free Non-Commercial edition can export resolutions up to 1025 x 1025 vertices (pixels). The Creative and Professional editions can export up to 32768 x 32768. In total, Terragen 4.8 can export heightfields to TER (preserving all scaling information), EXR (32-bit float preserving absolute height in metres), TIFF (16-bit unsigned short) and RAW (16-bit unsigned short) in addition to mesh export features.

Heighfield Erode V3 is improved:
 - Multi-threading option. This calculates erosion much faster, but may give slightly different results each time it is run. We recommend saving erosion results to TER files and loading those for consistent renders. The single-threaded option is still available for backward compatibility.
 - Option to fix a bug: "Fix gradient bug". This is optional to allow backward compatibility.
 - Border flow setting with the options "Stop", "Continue off map" and "Go around to opposite side". The latter option is fully backward compatible.
 - The parameter GUI has been updated to separate the parameters into "Weight" and "Character" groups.

We've fixed a bug that showed up in the rare situation where a Heightfield Shader's interpolation mode was set to "Linear" and the heightfield operator was delegating the interpolation to its input node. (This delegation happens when a heightfield node has no data, e.g. when an erosion node hasn't done any calculations yet.) The bug was using smooth interpolation instead of the expected linear interpolation.

The way that some heightfield node settings affect previews has changed. Let us know if you find any issues.

== Objects, Shaders and Texture Spaces ==

Objects regenerate on every frame if they have a mesh displacer connected to them so animated deformations are easier to use.

Transform Input Shader and Transform Merge Shader have a new option "Use sticky world space". This allows shaders to work in world space on objects that have MDDs or mesh displacers, without the textures sliding when the objects are deformed.

Distance Shader has "Coord space" options which include "World space", "Sticky world space", "Undisplaced space" and "Terrain or Texture space (warpable and transformable)".

== Rendering ==

-renderlayer command line option. See command line docs for details.

Pixel dithering is applied when saving 16-bit TIFFs just like it is for 8 bit formats, but with an appropriately smaller amount of dither. This applies to saving renders and exporting heightfields.

RTP shadows respect the shadow-cast settings of light sources and render nodes.

The colour of the rectangle and handles drawn in the 3D Preview to represent the crop region (ROI) can be changed in Preferences.

The renderer has some minor speed optimisations.

======================
Build 4.7.19 (Release)
======================

Fixed a bug in the texture coordinates on populated (instanced) objects that use "Force displacement".

======================
Build 4.7.15 (Release)
======================

RPC is enabled in the Free Non-Commercial Edition.

Micro Exporter produces cleaner geometry and smaller files, by merging duplicate vertices, normals, UVWs and faces. It can be used with multi-threaded renders.

Ray-traced samples contributing to the tgSurfNormal render element always have their normals in the camera-facing hemisphere.

=============================
Build 4.7.11 (Frontier Build)
=============================

Some things have been changed to make the Micro Exporter more logical to use, making it consistent with other options on the Output tab, and easier to understand what will be output when rendering:

 - "Render All To Disk" button has been renamed to "Render To Disk".

 - Some information about what kinds of data will be output by Render To Disk is shown to the right of the button, such as "Images", "Micro export" or "Images + micro export".

 - The micro exporter on the Output tab works only when using "Render To Disk", "Render Sequence" or command line rendering. It does not work when using "Render Image". This makes it consistent with the other options on the Output tab.

 - The main image file output on the Output tab has a checkbox so it's possible to disable outputting images when using "Render To Disk". This may be useful when using the micro exporter.

=============================
Build 4.7.10 (Frontier Build)
=============================

VDB exports set a uniform voxel scale when using the "Set bounds for VDB export" feature, for greater compatibility.

If using a license server, the render node (Terragen running with -hide flag) will wait up to 45 seconds for a license (previously this was 10 seconds).

=============================
Build 4.7.08 (Frontier Build)
=============================

Radiance HDR: Images can be saved in the Radiance HDR (.hdr) format in the Professional Edition and Creative Edition.

EXR in Creative: Images and heightfields can be saved to EXR files in the Creative Edition as well as the Professional Edition.

Multi-channel EXR: You can choose to embed extra output images into the main output as a multi-channel EXR. This includes the full set of Render Elements in the Professional Edition and the tgAlpha element in the Creative Edition. Options include regular Multi-Layer EXR and Multi-Part EXR.

Added "Set all objects to hidden" to the action menu of the Objects Node List.

=============================
Build 4.7.02 (Frontier Build)
=============================

The VDB exporter leaves grid points empty wherever the density value is zero.

"Different resolution for VDB export" and "Millions of voxels for VDB" settings on the Optimisation tab of cloud layers. You can tell VDBs to be exported at a different resolution from the cloud's internal voxel buffer.

"Set bounds for VDB export" on the Optimisation tab of clouds layer. VDB Export bounds can be defined by a bounding box. This can be moved, scaled and rotated however you like. Most of the built-in objects can be used as a bounding box, but we suggest using a non-renderable object such as the new Bounding Box node. Not only can this be used to clip the cloud, you can also use it to help the exporter avoid wasting time sampling empty space if you manually shrink the box around the actual cloud.

New object type: Bounding Box. This is a non-renderable object that can be used with the VDB exporter and may be used for various purposes in future.

The Node Network draws inactive node links/connections with a faded line. Most shaders and some other nodes set connections to be inactive when there is an unchecked checkbox associated with them. This improves readability of the node graph.

Various shaders automatically enable/disable parameters widgets associated with enabled/disabled features.

======================
Build 4.6.43 (Release)
======================

Fixed a bug in semi-transparent shadows that caused some other shadow contributions to be ignored.

Faster GI cache lookups, especially in atmospheres at high resolutions.

=============================
Build 4.6.36 (Frontier Build)
=============================

Mac only: Fixed some dependencies that stopped the OpenVDB plugin tgopenvdb.tgp from loading.

Mac only: Fixed the notarization of the app.

=============================
Build 4.6.32 (Frontier Build)
=============================

MacOS build of Terragen 4.6. Our build process has been updated, so we've designated this a Frontier build. Please let us know of any issues you find with this version.

======================
Build 4.6.31 (Release)
======================

Georeferencing for everyone: Georeferencing capabilities (which are in Heightfield Load, Geog Heightfield Load and Geog Image Map Shader) are no longer restricted to the Professional Edition; they are available in Creative and Free Non-Commercial editions as well.

Professional Edition only: RPC System version 0.9.0 (Beta). Terragen RPC is a remote procedure call system for Terragen. A running instance of Terragen on Windows or Mac can act as a server, allowing other programs to make remote procedure calls (RPCs) to query the open project and modify its state. Possible uses include productivity-enhancing tools, syncing of data with other applications in real-time, render-farm submission scripts, studio pipeline tools etc.

RPC documentation: https://planetside.co.uk/docs/terragen-rpc/

=============================
Build 4.6.23 (Frontier Build)
=============================

The FBX importer works with FBX files that use non-default coordinate systems.

Fixed a bug that caused unnecessary flicker in cloud layers. This bug was introduced in 4.6.

Windows only: Optimisations to lots of core functions used by shaders, providing a small speedup.

A small optimisation in cloud scattering engine.

Experimental: Attempting to approximate RTP GI in Cloud Layer V2 in the same way that it's done in Planet Atmosphere.

RTP threads on Windows set priority to below normal.

Fixed some bugs in the reporting of license info in "Show License Info" and in the standard output.

=============================
Build 4.6.19 (Frontier Build)
=============================

Windows only: Removed some potentially very slow network queries when the Library contains missing file references with UNC paths.

Improved upon the changes made in 4.6.11 for rendering clouds in the 3D Preview.

Made some slight changes to the multiple scattering engine for Easy Cloud and Cloud Layer V3.

Increased the max ray depth for the GI approximation used in RTP for Planet Atmosphere.

The open file dialog for population caches allows selection of .popxml as well as .pop files.

Fixed a hang that could occur on the Mac when loading heightfields (and possibly other situations).

Updated the About Box link to the Planetside forums.


=============================
Build 4.6.11 (Frontier Build)
=============================

OpenVDB export is available on Windows (previously it was only on Linux). A VDB file can be exported from the command line and from the context menu of a cloud node in the Node Network. https://planetside.co.uk/wiki/index.php?title=VDB_Export

Changed the 3D Preview's level-of-detail calculations for voxel buffers in clouds. It uses a view-dependent minimum voxel size so that clouds nearer the camera are more likely to be rendered with the highest voxel resolution provided by the cloud, while clouds further away are more likely to be approximated. There are two modes to this. The first pass of the RTP, and all passes of non-RTP previews, use a low-detail mode which is designed to be fast (fewer voxels need to be cached before you see results). Subsequent RTP passes use a higher detail mode which is closer to final renders but may take longer to cache voxels before you see the results.

Removed the "Acceleration cache" feature from cloud layers because it caused problems with consistency between image tiles.

Fixed a bug in planet atmosphere "Reset Tweaks" which set one of the colours to the wrong colour space. This only mattered if colour management was enabled, and only during the session (saved files were not affected).

Fractal Warp Shader has a seed parameter.

The Tonemap tab on Render Settings has 3 radio buttons to change the gamma correction mode: "sRGB", "sRGB with custom gamma" and "Pure gamma".
 - "sRGB": The sRGB standard OETF is applied. Compared to a pure gamma of 2.2, sRGB mode produces slightly darker values near black and slightly more contrast in the low-to-mid-range.
 - "sRGB with custom gamma": The behaviour is exactly the same as "sRGB" if the gamma correction parameter is 2.2, otherwise deviations from 2.2 are applied as a gamma correction before the sRGB standard OETF is applied.
 - "Pure gamma": Gamma correction is applied exactly as it was in previous versions.

Work-in-progress: "Replace with another object" is available in the Node Network's context menu for object readers and object generators. Undo is not working yet.

XML population caches: Population caches can be saved to (and loaded from) an XML-based format by choosing a filename with ".popxml" extension.

Prevented a crash that could occur in the Populator if it fails to read a population cache file.

Mac only: Performance should be greatly improved when dealing with any views containing a lot of controls, for example parameter views whether in standalone windows or the main window. It's much quicker to change between layout views or different nodes in the main window.

Fixed a crash that sometimes occurred when loading heightfields, especially when loading multiple heightfields at the same time.

Fixed a bug in "Build HSV Colour" function: If the input colour had a saturation other than 1, its hue would be calculated incorrectly. If this hue was passed through to the output (while modifying saturation or value), the output would have the wrong hue.

Some changes to the how the Progress Dialog works to allow multi-threaded progress reports.

Low level optimisations in the renderer.

Optimisations in some noise functions.

Optimisations in Power Fractal Shader (which also affects Easy Cloud).

Made a change to low-level memory management of scenes and renderers to fix a possible instability.

Fixed a bug in in the Free Non-Commercial Edition that showed a warning about missing some data when a render is finishing.


=========================
VERSION 4.5 QUICK SUMMARY
=========================

Updated license agreement: https://planetside.co.uk/terragen-4-eula/
Terragen 4.5 is not compatible with third party plugins that were built for Terragen 4.4 and earlier. Contact plugin developers to download updates that are compatible with Terragen 4.5.
On Windows: Terragen is now built with Visual Studio 2019, and the installer has changed. Let us know if you run into any problems.
RTP improvements.
Default Shader has been improved with PBR materials in mind:
 - Metalness controls.
 - GGX and other improvements to specular roughness models.
 - Remap ^2 option for roughness image.
 - Gamma conversion can be disabled on the roughness and displacement images.
OpenColorIO (OCIO) integration.
Any changes to the Render node's tonemap and gamma settings cause an update to the Render View immediately.
Planet Atmosphere improvements: Rayleigh scattering phase function; better GI cache.
Cloud GI for Easy Cloud and Cloud Layer V3 can be cached in GI cache files.
Motion blur quality improvements.
Changed behaviour of motion blur checkbox - read the change log for details.
The weird red-orange-yellow triangles that are seen during rendering (temporary deferred shading data) are now held in the alpha image rather than the main image.
New object: Poly Sphere. This can be populated and has a mesh (vertex) displacer input.
MDD files can be used to animate imported objects.
Recalculate normals when applying mesh displacers to imported objects.
"Save Object File..." in the context menu of the Network View works on more kinds of objects.
Fixed world-space opacity bug for populations.
Fixed the population cache bug which would write an extra instance at the origin.
Fixed some crash bugs.
Library improvements and bug fixes.
Mac only: Fixed some problems with Dark Mode.
Mac only: Fixed some Library redraw problems.
Lots of other improvements and fixes to the renderer, shaders, UI and more.
Documentation for Default Shader: https://planetside.co.uk/wiki/index.php?title=Default_Shader
Documentation for OpenColorIO: https://planetside.co.uk/wiki/index.php?title=OpenColorIO
Documentation for Easy Cloud: https://www.planetside.co.uk/wiki/index.php?title=Easy_Cloud
Documentation for Cloud Layer V3: https://www.planetside.co.uk/wiki/index.php?title=Cloud_Layer_v3
Documentation for Planet Atmosphere: https://planetside.co.uk/wiki/index.php?title=Planet_Atmosphere

======================
Build 4.5.71 (Release)
======================

Fixed a bug in the Geog Image Map Shader which first occurred in v4.5.

Fixed a bug in the Shader Array which first occurred in v4.5.

Fixed a bug in the population cache (.pop) file writer which would add an extra instance at the origin.

Fixed a crash when the Library tried to display a project file that had been deleted.

Windows only: Fixed a crash when scanning a folder for Library items. This bug first occurred in v4.5.

Windows only: Fixed a bug which sometimes didn't clear the image when starting a new render. This bug first occurred in 4.5.60.

======================
Build 4.5.60 (Release)
======================

Improvements to Gather Project feature:
 - On Windows, fixed an error that occurred when gathering a project with multiple references to the same file with different upper/lower case spellings.
 - On all platforms, Gather Project detects files that would clash on a Windows target machine due to case-insensitive filenames, and renames the destination files to resolve the conflict.
 - If Gather Project fails to copy assets to the destination folder, the error message includes the name of the first failing asset and a little bit more information on why it failed.

Fixed a bug which could cause crashes when preview images are generated for the Library.

Windows only: Fixed a recent bug that prevented loading of files larger than 2 GiB.

Windows only: Fixed the installer error "Setup has detected that the file 'vcredist_x64.exe' changed since it was initially published."

======================
Build 4.5.56 (Release)
======================

Default Shader changes:
 - Deprecated the gamma options for roughness image and displacement image. Removed the gamma option for metalness image.
 - Added "Remap ^2" option for the roughness image. This changes the roughness curve by squaring the values in the image. This improves compatibility with many third-party PBR shaders. If "Invert (gloss map)" is enabled, the squaring occurs after the inversion.

================================
Build 4.5.54 (Release Candidate)
================================

Fixed some problems with GGX and Beckmann TG 4.5 that occurred at very small roughness values. They only affected the Reflective Shader.

================================
Build 4.5.53 (Release Candidate)
================================

Default Shader and Reflective Shader have two new specular roughness models: "GGX" and "Beckmann TG 4.5". "Beckmann TG 2" is also available for backward compatibility. https://planetside.co.uk/wiki/index.php?title=Default_Shader_4.5#Roughness_Tab

Changed the path tracer's distribution of glossy reflection rays to correct an incorrect sharpness at high roughness settings. It now biases microfacets towards the ray origin using a formula based on roughness and viewing angle, to approximate the view-dependent distribution. This visibly shifts reflections at high roughness and glancing angles, but some shift should occur naturally anyway.

Glass Shader and Default Shader force a minimum specular roughness of 0.005 for direct lights (but not other rays) so that highlights are more likely to be visible when the shader's roughness is smaller than that.

The renderer no longer supports per-channel (RGB) roughness which was previously allowed for direct highlights.

UI changes related to specular roughness:
 - Roughness sliders go up to 1.0 on Reflective Shader, Glass Shader and Default Shader.
 - IOR slider goes from 1 to 5 on Default Shader.
 - Removed "specular" from the display name of "Unpremultiply specular roughness".

Exposure is working again in the 3D Preview (non-RTP). This was a 4.5 bug.

RTP uses fewer threads so the UI can be more responsive without affecting rendering speed too much. The new formula is: RTPThreads = (PreferencesThreads + 1) / 2

The basic light that RTP shines from the camera to light up shadows in non-path tracing modes, which used to only recognize a material's diffuse colour, now shows metallic base colours as well. It still appears diffuse unless you enable path tracing.

Fixed a motion blur bug for AA values that are not a power of 2. This was a 4.5 bug.

Fixed a bug in "Smooth polygons at terminator" that failed to distinguish separate objects.

"Smooth polygons at terminator" is now available in Poly Sphere. It is enabled by default.

Poly Sphere has a mesh displacer input and checkbox for recalculating normals.

World space coordinates are set correctly when evaluating opacity shaders/functions applied to instanced objects (populations). This means you can now apply Transform shaders with "Use world space" downstream from opacity functions.

OCIO can be force enabled with the command line argument "ocio" or "ocio=yes", as long as there is an environment variable named OCIO pointing to a valid OCIO config file. This command line argument causes Terragen to enable "Use OCIO" in Project Settings at startup and after a project is loaded. Terragen will default to roles which work well with ACES 1.0.3 but might not be compatible with your OCIO configuration, so we recommend testing this feature in the GUI first to see if the default settings are suitable. Please send us feedback if you think our defaults could be better or you need more controls.

OCIO can be disabled with the command line argument "ocio=no". This causes Terragen to disable "Use OCIO" in Project Settings at startup and after a project is loaded.

When using OCIO, Planet Atmosphere's colour parameters are transformed from shader space to rendering space so that OCIO has less effect on final images. This changes how OCIO renders look when compared to previous 4.5 builds but it should make atmosphere colours more predictable in most situations.

Object preview is aware of the case where the subject is neither a shader, terrain nor object (e.g. an object part) which would previously render with viewmode = Default. Now it does not render in this case. This stops some crashes.

"Add Object" submenus renamed from "Object" and "Displaceable Object" to "Displaceable Object" and "Populatable Object".

Fixed a crash that would occur with image file paths longer than 1024 characters.

Uses a safer method to insert frame numbers into filenames.

Fixed an occasional crash during prepass. This was a 4.5 bug.

Ray detail region defaults to "Detail in camera".

Help button on Project Settings goes to "project_settings" rather than "UNREGISTERED_CLASS"

Nicer formatting of metadata in clip files. Solved some problems with the Library's handling of clip files.

OpenColorIO license added to Third Party Licenses folder.

Mac only: Fixed a number of UI drawing problems when using Dark mode.

Mac only: Fixed some redraw problems in the main list of the Library window, when using browsing mode.

=============================
Build 4.5.43 (Frontier Build)
=============================

Fixed a bug in using the Library to add populations to the scene.

Planet Atmosphere changes:
 - Reduced the render time overhead of "Better cache radius".
 - "Rayleigh phase function" is enabled in the default scene and for newly created nodes.
 - "Haze glow" is now called "Haze sun glow". Using the word 'sun' is consistent with the equivalent parameters on cloud layers.
 - UI tweaks related to Rayleigh phase function, haze sun glow and bluesky glow.
 
Fixed a new bug (from 4.5.42) in Surface Layer's merging of input transparency and reflection when "apply colour" is off.

=============================
Build 4.5.42 (Frontier Build)
=============================

Improved motion blur sampling.

Objects readers have options for recalculating normals when reading MDD files or applying mesh displacement.

MDD import has an option to work with files where the Z axis is reversed.

Fixed a 4.5 bug in the Surface Layer's merging of input transparency and reflection.

A partial fix for holdouts not working in deferred shading. It's only a partial fix because the alpha channel may retain some of the info buffer when there's adaptive sampling.

Measure Window displays length in miles in parentheses and height in feet in parentheses (in addition to the usual metric displays).

Fixed warnings when creating a new planet.

Changed the install flags for Visual C++ 2015-2019 redistributables to "/q"

=============================
Build 4.5.38 (Frontier Build)
=============================

Fixed some bugs in the new Cloud GI caching feature.

Planet Atmosphere has a new option called "Better cache radius" which is enabled by default. This improves the resolution and accuracy of enviro light (GI) in the atmosphere. Some scenes will be affected more than others. It can make a big difference at twilight.

The weird red-orange-yellow triangles that are seen during rendering (temporary deferred shading data) are now held in the alpha image rather than the main image.

=============================
Build 4.5.35 (Frontier Build)
=============================

Cloud GI for Easy Cloud and Cloud Layer V3 can be cached in GI cache files. When reading GI cache files the names of the cloud layers must be the same as when the cache files were written, otherwise the caches will be ignored and the GI will be calculated on the fly as normal.

Known issue: aborting renders is sometimes not possible when generating cloud GI caches, and may hang the program.

When Heightfield Generate is aborted, "Generate on load" is unchecked so that it doesn't get stuck in a loop, and the partially generated terrain is cleared.

Fixed a bug in Heightfield Generate that was new in 4.5.

Changed the text that's displayed on the Render View during rendering to indicate the pass and percentage of pass completed.

A minor change to the sampling of enviro light in Planet Atmosphere and Cloud Layer V2.

Windows only: Windows installer requires (automatically downloads) Visual C++ 2010 redistributables because some libraries need msvcp100.dll and msvcr100.dll.

=============================
Build 4.5.32 (Frontier Build)
=============================

== General ==

Updated the License Agreement. One of the changes is Restrictions on Volumetric Assets.
https://planetside.co.uk/terragen-4-eula/

On Windows: Terragen is now built with Visual Studio 2019, and the installer has changed. Let us know if you run into any problems.

Terragen 4.5 is not compatible with third party plugins that were built for Terragen 4.4 and earlier. Contact plugin developers to download updates that are compatible with Terragen 4.5.

Lots of changes were made to the renderer and shaders that allowed us to improve the plugin SDK. There may be some bugs.

On Windows: Using OpenEXR version 2.4.1.

== Shaders and Materials ==

Default Shader has been improved with PBR materials in mind:

 - Metalness controls.
 - Diffuse colour is renamed to "Base colour", and affects the colour of the specular reflection used when metalness is 1.
 - Reflectivity is renamed to "Fresnel reflectivity" and defaults to 0.75.
 - Roughness defaults to 0.8.
 - Gamma conversion can be enabled or disabled on the roughness, displacement and metalness images.

Simple Shape Shader blends with non-Lambertian shaders more correctly.

Simple Shape Shader, Contour Shader and Constant Shader now output the correct colour when used as a utility (mask, modulator, input to colour adjustment shaders, etc.)

Visualise Normal and Visualise Tex Coords now output the utility colour you would expect (for masks etc.), regardless of whether you're using the diffuse option or the luminous option.

== Rendering ==

Professional Edition only: OpenColorIO (OCIO) integration, experimental. Documentation is here: https://planetside.co.uk/wiki/index.php?title=OpenColorIO

Any changes to the Render node's tonemap and gamma settings cause an update to the Render View immediately. This works on finished renders. It also works on in-progress renders, but we're not completely sure that it's thread safe yet. Behaviour might be strange when used with multiple render nodes, because they update the Render View even if they aren't responsible for the image.

When the motion blur checkbox is off, the image is rendered exactly on the camera values for that frame without any interpolation. It also causes motion vector elements (tgSurf2dMotion and tgCloud2dMotion) to be empty/black. To output motion vectors and get the same camera interpolation as v4.4, you now need to enable motion blur and set the motion blur method to "Vectors only, for post".

== Atmosphere, Clouds and Lighting ==

"Rayleigh phase function" is a new option on the Lighting tab of Planet Atmosphere. This can be enabled for more a realistic, physically based atmosphere. When enabled, the "Bluesky glow" settings are ignored; they're replaced by the Rayleigh phase function. It brightens the "Bluesky" component of the atmosphere by 50% in directions towards the sun and opposite the sun, and darkens it by 25% in directions that are 90 degrees away from the sun (halfway between the two bright lobes).

"Voxel scattering quality" slider goes up to 400. You can still enter higher values by hand.

Spotlight's "shape" parameter has a dropdown to choose between Circle and Square. Previously you had to enter either 0 or 1.

== Objects ==

MDD files (BETA): Object readers have the option to "Read MDD (motion) file". This is on the Mesh Modifiers tab. Currently it only moves vertices, it does not recalculate normals.

New object: Poly Sphere. This is in the category of populatable but non-displaceable objects. It have doesn't mesh (vertex) displacement features yet, but they will be added soon.

"Save Object File..." in the context menu of the Network View now works with certain Object Generators (e.g. Card, Grass Clump, Poly Sphere, Rock), not just Object Readers. Also removed the restriction on saving objects that are members of a population.

== UI ==

On Windows: "Choose folder" dialogs use Windows' IFileDialog instead of the ancient SHChooseFolder. This improves the Gather Project window, Library window, and Preferences.


===========
VERSION 4.4
===========

======================
Build 4.4.67 (Release)
======================

Updated the License Agreement. One of the changes is Restrictions on Volumetric Assets.
https://planetside.co.uk/terragen-4-eula/

Improved stability on systems with many cores by increased the internal parallelism cap to 16 times the number of detected cores/threads in interactive/workstation use and 5 times the number of detected cores/threads in the Linux render node.

Overhauled the bump mapping and lighting system that's used on ray traced objects, to improve image quality and accuracy. The last few 4.4 builds had some bugs that were caused by changes to address some long-standing issues. The new system in 4.4.65 fixes those bugs and also maintains solutions to other long-standing issues.

 - Fixed some bump mapping and lighting bugs that were introduced in 4.4.46: incorrect lighting position, incorrect normals on highly curved or highly displaced surfaces.
 - Bump maps don't affect the lighting position anymore, because this was causing severely unrealistic distortion of shadows.
 - Bump maps affect the data that shaders use for non-lighting. For example, altitude constraints work with bump mapped surfaces. This works with negative bump too. 

There's a new option to fix self-shadow artifacts at the lighting terminator on polygonal objects. Object readers have a new checkbox called "Smooth polygons at terminator". This is enabled by default.

There's a new option to approximate self-shadow of bump maps at the lighting terminator. Object readers and object generators have a new checkbox called "Darken bumps at terminator". This is enabled by default.

Fixed a bug that occurred when "Ray trace objects" was off. Objects whose render method was "Default" were being rendered with both the rasteriser and the ray tracer. The correct behaviour in this case is to render with only the rasteriser. The bug may not have been noticed with objects that have positive displacement.

"Cloud base (min)" and "Cloud top (max)" readouts on the Atmosphere Node List are updated when a cloud layer's depth is changed.

Better updating of key files when a license has been renewed.

======================
Build 4.4.49 (Release)
======================

Fixed a mistake in the subdivision of displaceable surfaces when seen by rays at depth 3 or more.

Fixed some ray tracing bugs that were added in recent frontier builds.

The default scene has soft shadows enabled with 4 samples.

Made some changes to the renderer to solve problems with bump mapping that were introduced in recent builds.

Improved the RTP's rendering of surfaces with opacity less than 1.

Glass Shader's default scattering mode is "Subsurface scatter in all directions".

When loading projects with Geog Heightfield Load, it now respects the deferred loading policy which is used by other heightfield nodes. That is, it only loads when it is needed by a preview or a render, and if the Heightfield Shader is disabled the loader won't load.

Render nodes automatically insert ${IMAGETYPE} into the extra output image filename if it doesn't contain IMAGETYPE when starting a render with extra output enabled. Dots or underscores may also be inserted, depending on the filename.

When automatically inserting %04d into output filenames that don't include it, no dialog box is shown. Dots or underscores may also be inserted, depending on the filename.

If the legacy sampler is being used, "Using legacy sampler >" is displayed on the render Quality tab in place of "Sampling is customised".

Minor UI changes in the Render node, Glass Shader and Water Shader.

Reverted the change from 4.4.40.frontier that prevented bump maps from displacing the shading position. This brings back the ability to use the "positive bump trick" to avoid sharp terminators on low-poly geometry.

Changed how the ray origin is determined for transmission rays (including SSS) so they should work properly with the bump map behaviour mentioned above.

======================
Build 4.4.45 (Release)
======================

Fixed a problem with post-process effects which caused some renders to crash.

Read and write filenames for GI caches can use render variable expansion, e.g. ${TGDNAME}.

When starting a render that writes a GI cache file, the renderer attempts to create destination folders for the GI cache file if necessary. However, in this version if an error occurs creating output folders it won't stop the render, unlike the case with output images.

Reversed the order of parameter expansion so that the non-curly-braced versions of the following work: $RENDERER, $RENDERNODE, $RENDERLAYER, $RENDERSECONDS, $RENDERTIME. Using curly braces is still advised, however, to avoid ambiguity and make things more reliable when other variables are added in future.

======================
Build 4.4.44 (Release)
======================

== Rendering ==

Changed the default render settings:
- "Robust adaptive sampler" is enabled by default.
- "Anti-aliasing" default is 3.
- "Defer all shading" is enabled by default.

The radio buttons for choosing between "Standard renderer" and "Path tracer" have moved to the Quality tab of the render node, and other controls have been rearranged to accommodate them.

The path tracer is ready for use in production. More information is in the Path Tracing section below.

The robust adaptive sampler is ready for use in production. Two changes were made to the the robust adaptive sampler to produce better looking images in a shorter render time. We fixed an important bug in the way it handled colours, and implemented a new method of evaluating contrast. Both of these changes provide a better ratio of image quality to render time.

The "Robust adaptive sampler" checkbox in the Render Pixel Sampler has been replaced by two radio buttons: "Legacy adaptive sampler" and "Robust adaptive sampler".

Corrected some flaws with motion blur when the pixel sampler is adaptive, by reverting to a random sampling strategy in this case.

Fixed a bug with the ray bias in shadow rays originating far from the camera. The fix makes distant vegetation render more correctly.

Worked around a bug which can cause large amounts of noise in the atmosphere GI cache if reflective shaders are visible to the camera in the GI prepass. To work around this bug, the reflective shaders do nothing when hit by camera rays in the GI prepass.

Changed how bump mapping affects the shading position. Bump mapping doesn't affect shading position anymore because this was causing incorrect rendering of transparency. However, this also means we can't use the positive bump trick to avoid sharp terminators on low-poly geometry. We may need another solution for this in future builds.

== Output ==

New variables can be used in rendered output filenames. The complete list is now as follows:

    ${BUILDNUMBER} // e.g. 4.4.42.0
    ${CAMERA} // the name of the camera at the moment the frame started rendering
    ${IMAGETYPE} or IMAGETYPE // e.g. tgSurfDirect, tgCloudRgb etc. If used for the main output it will insert tgBeauty
    ${LAYER} or ${RENDERLAYER} // the name of the render layer at the moment the frame started rendering, if one was connected
    ${RENDER} or ${RENDERER} or ${RENDERNODE} // the name of the render node at the moment the frame started rendering
    ${RENDERSECONDS} // render time in seconds, e.g. 134
    ${RENDERTIME} // render time formatted with hours, minutes and seconds (e.g. 1h07m24s), or without the hours if shorter than 1 hour, e.g. 02m14s
    ${TGDNAME} // the name of the last saved or loaded TGD file at the moment the frame started rendering (or "Untitled"), without the path and without the extension

The default output filename and extra output filename are "${TGDNAME}.%04d.tif" and "${TGDNAME}.${IMAGETYPE}.%04d.tif" respectively.

Output folders are verified and automatically created if necessary at the start of a render that outputs files. The render aborts if output folders don't exist after attempting to create them. (Feature #742)

Temporary/automatic render output files (the ones named "tgout") have a new filename format that includes the render time and the version of Terragen.

When tgSurfIndirectDiff is enabled in a render layer, two new elements tgSurfIndirectDiffRefl and trSurfIndirectDiffTrans are automatically output as well. When tgSurfIndirectSpec is enabled, two new elements tgSurfIndirectSpecRefl and tgSurfIndirectSpecTrans are automatically output as well. Please note that these images are not being properly generated in this build; they are always black.

Before writing an image file, Terragen prints to stdout "Attempting to write image: " followed by the filename. ImageWriterTIFF no longer prints anything when it succeeds, only when it fails. This is consistent with the behaviour of ImageWriterEXR.

== Faster, Higher Quality Cloud GI ==

Cloud GI calculation is now much faster in scenes with high micropoly detail and/or high ray detail multiplier. This change comes at the expense of slightly reduced correctness which is unlikely to be noticeable in renders.

Slightly increased the spatial resolution of cloud GI (relative to the number of voxels), taking advantage of the faster calculation in this version.

== Path Tracing ==

The path tracer is ready for use in production. The path tracer option has moved to the Quality tab of the render node.

Transparency (glossy/specular transmission) can be rendered with the path tracer.

Improved the performance of the path tracer in lots of ways.

Improved the adaptivity of the path tracer when using the Robust Adaptive Sampler.

You can control the path tracer quality with "Max paths per sampler" on the Quality tab of the render node.

You can control the path tracer's maximum ray depth with "Max ray depth in PT" on the Advanced tab, but it cannot go higher than 13 in this build. The default value is 5.

Path tracer clamps albedo to 1 on all bounces except the first. This is necessary to be physically correct and to avoid extremely bright samples after multiple bounces.

Faster path tracing with soft shadows: When path tracing, the sampling of direct lights uses fewer samples in bounced light. The number of soft shadow samples has much less impact on render times.

Fixed a bug in the path tracer that sometimes made it impossible to finish or stop renders and previews.

== Subsurface Scattering in Path Tracer ==

Water Shader and Glass Shader "volume density" and "volume colour" can be used with the path tracer. This can be used to render objects with subsurface scattering. You can choose from 3 different methods to calculate subsurface scattering.

== Caustics ==

When rendering with the path tracer, direct light sources reflecting off or refracting through shiny objects can cause caustics. They are only roughly approximated to reduce the amount of noise they produce.

These caustics may also show up in renders that don't use path tracing, but at a lower quality.

Water Shader, Glass Shader and Reflective Shader have a new parameter called "Caustic intensity" which defaults to 1. When a ray bounces off (or passes through) other rough surfaces before hitting this shader, "Caustic intensity" controls the brightness of the specular highlights of direct light sources. This is what causes this shader to cast direct light caustics (reflective and refractive), but it is often a major source of unwanted noise in path traced renders (or flickering in other renders) so it may be useful to control its intensity.

Caustic refractions and reflections are not cast by objects that have "Cast shadows" disabled. This is to obey conservation of energy and to avoid making path-traced underwater surfaces too bright under the Lake object which has shadows disabled by default.

== Water and Glass ==

When simulating solid panes of glass with two parallel faces with opposite normals, previously there was a bug with direction of the rays emerging from the far side. This has now been fixed.

Glass Shader's "Double-sided surface" parameter is labeled "Double-sided / Thin-walled". This is to indicate that it's similar to the "Thin Walled" option found in other renderers.

Moved the Water Shader's "seed" parameter to the Waves tab and removed the Seed tab.

== Objects ==

When an OBJ file is read into a project for the first time, it creates material nodes for any material references in the OBJ (or groups/objects if there are no material references) as well as materials defined in the MTL file (if any). It does this regardless of whether a MTL file is found.

Bump maps and displacement maps are read from OBJ MTL files and are applied to the displacement channel.

== 2D/3D Previews ==

Improved the performance and reduced the memory use of the 2D and 3D previews.

The 3D Preview allows objects, lights and cameras to be manipulated when in RTP mode. Camera wireframes are drawn and handles are shown for objects and lights. When hovering over a handle, the object is drawn in the same way it is in non-RTP mode, according to the Object Display Mode (bounding box, wireframe, smooth shaded or textured).

Specular highlights (from direct lights) are rendered in RTP mode if shading is enabled.
 
Translucency of direct lights is rendered in RTP mode if shading is enabled.
 
Path Tracing can be enabled or disabled in RTP mode by clicking on the gold cup icon or by using the right-click menu (context menu) in the 3D Preview while in RTP mode.

Corrected the normals of instanced (populated) objects in RTP mode.

Smooth normals and bump mapping are rendered in RTP mode.

Fixed a bug with the ray bias in reflection/refraction rays in the RTP.

== Miscellaneous ==

There is a new checkbox at the top right of the main window called "Dynamic Layouts". This controls what happens when you click on the Layout Buttons to the left of it. When it is checked, the user interface behaves as it did before. If you uncheck this box, Terragen won't automatically open or close the 3D Preview or Node Network (except when you click on the Node Network layout button) and it won't automatically change the shading, atmosphere and lighting settings on the 3D Preview.

The Preferences item "Centre on nodes selected in node lists" is respected when switching between layouts. Previously it was respected only when manually clicking on nodes in node lists, and a change of layout caused centering to occur regardless of this preference.

Populator V4 "terrain shader" and "object to sit on" inputs are hidden from the network view so that they don't draw connections. The change was made because terrain shader connections from every populator were causing a lot of ugliness in projects.

Steppers are provided in the GUI alongside many edit boxes.

Mac only: Some changes have been made to work better in the OS's dark mode, but this is still a work-in-progress. If you switch the OS between light mode and dark mode you should restart Terragen to allow it to adjust to the new mode. This change was also included in 4.3.23.

Constant Colour node has individual parameters to control red, green and blue values.


===========
VERSION 4.3
===========

======================
Build 4.3.23 (Release)
======================

Fixed a bug that slowed down the Node Network view when showing labels on node inputs (first appeared in v4.2).

Prevented a crash that sometimes occurred when exiting the application.

======================
Build 4.3.22 (Release)
======================

Heightfield Shader rotation can be manipulated with rotation handles in the preview.

Heightfield Shader has a "locate in" parameter to choose between "Texture space (warpable and transformable)", "Undisplaced space" and "World space". Existing files use "World space" for compatibility. New nodes are initialised with "Texture space (warpable and transformable)".

Fixed a bug in Surface Layer's Intersect Underlying feature that affected 4.3 builds.

Fixed a crash that could occur when reading or writing TGD or TGC files with long file paths (longer than 214 characters).

======================
Build 4.3.21 (Release)
======================

Heightfield Shader has a rotation control which can be used on non-georeferenced heightfields.

Appending shaders to objects of any type while in RTP results in the shader being updated correctly. Previously this only worked with non-displaceable object types.

The Plane object can now be rendered in the RTP.

Stopped showing a warning when making changes to Disc object.

Fixed a bug with the repositioning of planet atmospheres and cloud layers that first appeared in v4.0.

Removed a bug that caused incorrect cloud dimensions in some animated scenes.

Solved a problem that caused some unnecessary flickering and reduced GI quality in clouds when not using a GI cache file. The new code renders the GI pre-pass faster at low resolution or low detail. High resolution pre-passes may take longer than before, but the quality of the final pass will be improved.

Fixed a bug that would eat up RAM and crash in a rare situation involving clouds and some reflective materials.

"Millions of voxels" defaults to 10 for all cloud presets. The slider now goes from 0 to 32, but higher values can be entered.

Fixed a couple of bugs in the algorithm that calculated voxel buffer dimensions from the desired number of voxels.

The maximum voxel buffer size is now 32768 x 32768 x 32768, and the software limit on the number of voxels is 1 trillion. The new limits might be useful for exporting high resolution VDBs.

======================
Build 4.3.18 (Release)
======================

Fixed a crash that would occur if the update checker failed to connect to the server.

Changed the Easy Cloud's default evolution method to "Move height texture upwards", and changed the default speeds for drift and evolution.

======================
Build 4.3.16 (Release)
======================

FASTER RENDERING


Shaved about a third off calculation times for the colour generated by Power Fractal Shader V3 (colour/value, not displacement). This makes a big difference to render times for Easy Cloud, for example, and is expected to speed up many scenes that use the Power Fractal Shader.


CLOUDS


Animation of Easy Cloud. A new "Anim" tab on the Easy Cloud node has two new features to animate the cloud texture. "Drift" simply moves the textures horizontally over time, with controls for speed and direction. "Evolution" has a few different options, but they all work by moving textures up or down on the Y axis which creates the impression of change over time.

Easy Cloud's animation tab has a new feature called "Time warp". When using any of the animation effect (Drift or Evolution), normally these are calculated from the distance between the current frame and the reference frame, but this produces animation with a constant speed. "Time warp" allows you to vary the speed during the animation, pause or reverse time, create bounce effects, and so on. You do this by editing the animation curve on the "warped frame number" parameter.

In GI Settings, the default value for "Voxel scattering quality" is now 100, and the slider goes from 0 to 160. Although the optimal value depends on many factors, we've found that a value of 100 tends to render higher quality images in a shorter time than the old default of 50. We recommend updating any of your existing projects to use 100.


VDB EXPORT (ONLY ON LINUX)


Linux (Professional Edition) only: Cloud layers can be exported to VDB files from the command line. For more information visit https://planetside.co.uk/wiki/index.php?title=VDB_Export


PIXEL SAMPLING / ANTI-ALIASING


"Defer all shading" can now be enabled on the render node's Quality tab. This was first available in Terragen 4 Beta but it had some bugs so we disabled it. Now we've fixed those issues. Deferred shading is a great way to improve anti-aliasing of textures and lighting on the terrain and other displaced surfaces, and it unifies adaptive anti-aliasing across all parts of the scene. In some cases it will render faster, and in others it will render slower. Image quality and render time depend on anti-aliasing settings.

New controls for adaptive sampling in Render Pixel Sampler:

 - "New curve (BETA)." THIS MAY BE RECALIBRATED IN FUTURE BUILDS. When enabled, this changes how the adaptive sampler evaluates RGB values for contrast with neighbouring samples. The main difference is that the new curve increases the noise tolerance on bright pixels (especially super-bright pixels), which allows more time to be spent on shadows and mid-range areas. When enabled, render times are usually shorter. Therefore higher anti-aliasing can be used to get better quality images in less time.

 - "Robust adaptive sampler (BETA)." THIS MAY BE RECALIBRATED IN FUTURE BUILDS. When enabled, the adaptive sampler uses a more robust strategy to estimate noise in order to improve image quality. It looks at a larger grid of samples surrounding the current pixel or subpixel that is being considered for supersampling. This can be important when rendering scenes that have a lot of Monte Carlo noise from depth of field, 3D motion blur, path tracing, or small objects that are sparsely distributed. It helps to reduce temporal aliasing in animations. It can improve the quality of fine vegetation, because it includes samples that were often missed by the old adaptive sampler. When enabled, render times may be shorter or longer than before, depending on the scene. Some parts of an image may appear noisier than before, while other parts may appear cleaner, so you might want to adjust anti-aliasing and/or pixel noise threshold to get the desired result. It automatically uses the "New curve" described above, regardless of that checkbox setting.

 - Two new levels of adaptivity can be selected: 1/256 and 1/1024.

Professional Edition only: There is a new Render Element called "Sample Rate." This shows how the adaptive sampler decided to distribute ray-traced subpixel samples in response to the noise it detected. If viewing the image as an EXR, you should clamp the values at 1 (white) for ideal viewing. Full white pixels in the render element mean that the pixel contains the maximum possible samples for the Anti-aliasing parameter (e.g. 64 samples for AA 8). Magenta pixels mean 10% of the maximum possible samples per pixel were traced. Blue pixels mean 1%. Black pixels contain 0 samples. Although a pixel might contain no samples, interpolation occurs wherever samples are sparse. If viewing this element as an EXR, the green channel goes from 0 to 1 to represent the fraction of samples, while the red and blue channels may exceed 1 as they are equal to the green channel multiplied by 10 and 100, respectively. When you clamp the EXR at 1 you obtain an image with the colours described above.


PATH TRACING ON SURFACES (WORK IN PROGRESS)


"Path tracing on surfaces" is an option you can enable on the Advanced tab of the render node. Radio buttons are provided on the Advanced tab to switch between "Standard renderer" and "Path tracing on surfaces".

Please note that path tracing is still in development, and we don't recommend using this in production yet. Future builds may radically change the appearance of materials, sampling quality and so on. Subsurface effects in Water Shader and Glass Shader are not working yet. There may be other rendering features which don't work correctly when path tracing is enabled. You may find corner cases where the renderer becomes extremely slow - if you do, please send us TGDs so that we can optimise for these cases.

Path Tracing On Surfaces automatically uses "Defer atmo/cloud" and "Defer all shading" regardless of those checkbox settings, and the UI doesn't let you change those options when path tracing is enabled.

When "Path tracing on surfaces" is enabled, the normal GISD is not performed by the renderer. In GI Settings there is a new set of GISD options called "Exaggerate surface details" which applies to path traced renders only, and this is turned OFF by default.

Image quality is controlled using the overall anti-aliasing settings of the renderer. We recommend using the new "Robust adaptive sampling" mode whenever you render with path tracing. This can be found in the Pixel Sampler settings ("Edit Sampling..." on the renderer's Quality tab). The old adaptive sampler has trouble dealing with some of the Monte Carlo noise created by the path tracer, especially on darker surfaces. The new robust adaptive sampler was designed to work well with the path tracer (although it is useful in other cases too).

For more information visit https://planetside.co.uk/wiki/index.php?title=Path_Tracing


OTHER RENDERING STUFF


Adjustment to ray tracer to fix some failed intersections of nearby displaceable surfaces, particularly when there was no default background sphere in the scene. We're not sure whether this will have any adverse effects until more tests are done.

Fixed a bug with Surface Layer Intersect Underlying in "Displacement intersection" mode. The bug sometimes caused incorrect self-shadows, and also caused incorrect mixing of layers when seen in reflections and any other situation where the ray tracer hit the surface.

Corrected some flaws with DOF when the pixel sampler is adaptive, by reverting to a random sampling strategy in this case.

Fixed an incorrect surface normal in the RTP, which caused warp shaders to behave incorrectly when the warper displaced along the normal (among other things).


SHADER IMPROVEMENTS


The "unpremultiply" option in Image Map Shader (and hence Default Shader) does a safer unpremult that won't exceed 1 on brightest channel when images aren't properly premulted. They still won't look right but at least they won't cause asymptotes and fireflies. It won't allow unpremulting of HDR images but that seems like a rare use case.

Surface Layer has options on the "Effects" tab called "Better colour/shade continuity" and "Better displacement continuity". These cause the fuzzy zone calculations to use a higher quality exp() function instead of the fast approximation which was used before. The fast approximation is usually good enough for colour/shade distributions, but it can cause visible segmentation of the fuzzy zone when used to constrain displacements.

Added "Smoother fuzzy zones (better curve continuity)" checkbox to Distribution Shader V4, on the Tweaks tab. This is similar to "Better colour/shade continuity" in Surface Layer (see above).


OBJECTS AND FBX IMPORT


Better handling of objects that have a scale of 0 in one or more dimensions.

Null object node has rotation and scale parameters.

FBX Importer: Nulls imported from FBX files import rotation and scale.

FBX Importer: Automatically unrolls Euler flips on rotation parameters for Spotlights, Nulls and Markers (it was already doing this for Cameras).

FBX Importer: Converts rotation order from the order stored in the file to Terragen's native rotation order when importing Nulls and Markers. Spotlights may still be incorrect in some cases.


UI IMPROVEMENTS


Fixed a problem with the update timer in the Node Network when the view is being repositioned. With some projects the view would reposition very slowly after loading the project.

When loading a project from the command line or opening a project from the OS, errors and warnings during the load are directed to the Errors and Warnings window, the same as when loading from the File menu.

Heightfield Erode V3 updates the progress dialog more frequently, especially to help with UI issues during long erosion calculations.

The mesh subdivision feature of the Rock object updates the progress dialog more frequently, and can be aborted.

If the app is closed while the progress dialog is open, the app attempts to abort the operation safely before closing.

Windows only: The progress dialog is brought to the front of other Terragen windows whenever an operation updates the progress bar.

The render node's Advanced tab controls have been rearranged.


MISCELLANEOUS BORING STUFF


Changes to automatic updates of license key files and display of license info. In particular:

 - Expiry dates for maintenance and subscription are synced with the server whenever Terragen checks for software updates (either manual check or automatic check). Terragen asks the planetside.co.uk server whether the maintenance date on the license has been extended. If the maintenance has been extended, a new key file is downloaded from the server.
 
 - For subscription-based (non-perpetual) licenses: On startup, if the number of days remaining on a license <= 0, Terragen will attempt to download a new license key file from the server.

 - The number of days remaining on maintenance or subscription is recalculated based on the current date whenever that information is displayed (in case the app was started on a previous day).
 
 - Show License Info (and stdout) shows the number of render licenses included in the license key file. The formatting has been simplified and some info is omitted in cases where it's unimportant.

Various fixes, below, which are planned to be ported back to support updates for v4.1 and v4.2:

 - Fixed a bug that led to an illegal instruction exception on the Mac and possibly memory leaks on other platforms.

 - Fixed a crash when deleting animation on some nodes that have hidden internal nodes, such as Easy Cloud.

 - The text colour for animated parameters is properly updated when a key is removed or the animation is deleted.

 - The Add Lightsource button is now labeled "Add Light Source".

 - Updated tooltips for the Add Cloud Layer button and Add Light Source button.


===========
VERSION 4.2
===========

======================
Build 4.2.10 (Release)
======================

Rendering:

 - Much faster ray tracing of displaceable surfaces in some cases, especially where rays travel nearly parallel to the surface.

 - Corrected a flaw in the rendering of clouds whenever the camera's altitude is higher than the base altitude of a cloud layer (either within the cloud layer or looking down on them from above). The distant part of the cloud layer was being cut off where the planet's curvature should make the layer visible from underneath. This flaw was sometimes noticeable when looking towards the horizon with the camera near the clouds, and also at higher altitudes if clouds should be seen curving around the planet near the horizon.

 - Reflections can pass through a Surface Layer that has child layers as long as "Apply Colour" and "Enable Test Colour" are disabled and the child layers are disabled (or don't interfere with reflections by themselves). This won't work if the child layers are function nodes (blue nodes) because they automatically convert to black Lambert shaders when they are disabled.

 - Luminosity (emission) can pass through a Surface Layer that has child layers as long as "Apply Colour", "Enable Test Colour" and "Luminous" are disabled and the child layers are disabled (or don't interfere with luminosity by themselves). This won't work if the child layers are function nodes (blue nodes) because they automatically convert to black Lambert shaders when they are disabled.


Export:

 - Micro Exporter allows you to choose which texture space to use for the exported UVs or UVWs. "Image UV (render projection)" or "UVW from Compute Terrain or Tex Coords)". You should select "Image UV (render projection)" if you want to use the rendered image as a texture for the exported object. You can use this with any type of camera, including spherical cameras.


Groups and Notes in Network View:

 - After moving groups with the mouse, those groups auto-capture any nodes they surround.

 - After resizing a group with the mouse, the group auto-captures any nodes it surrounds.

 - After moving or resizing a Group or Notes node, they snap to the grid in a similar way to other nodes. When you first use this on an existing project you may find that the contents of a group shift around a bit, but after they have snapped once they should behave predictably.

 - Until now, the resize handle along the top edge of a Group or Note was gradually reduced as we zoom out to make it easier to click on the title bar at low zoom, but this made it harder to grab the top edge for resizing. Other edges kept the same screen space size for the resize handle. Now, rather than making it progressively difficult to resize the top edge at low zoom, it's simply disabled when zoom is below a certain level. Left, right and bottom edges can still be grabbed at any zoom level.


Inputs and outputs in Network View:

 - Shaders' main input which was previously called "Input node" in the GUI is now called "Main input".

 - Labels are shown above some input plugs that have a connection to another node, even when you're not hovering over them. The labels fade out and disappear when zoom is below a certain level. To reduce clutter, "Main input" and "Input 2" are not labeled (except when hovering over them).

 - Gradually fade opacity of input/output arrows when zoomed very far out.


New preview options:

 - Heightfield Shader has a checkbox "Show b-box in preview". This controls whether previews should show a bounding box and manipulation handles for the heightfield.

 - Simple Shape Shader has a checkbox "Show b-box in preview". This controls whether previews should show a bounding box and manipulation handles for the shape. Moved "Draw shape edges" up alongside "Show b-box in preview".

 - Camera has new checkboxes "Show frustum in preview" and "Show path in preview" below the existing "Show camera body in preview". When showing neither the camera body nor the frustum, no manipulation handle is shown or selectable in the preview.


File and image handling:

 - Added "Reload File" to the popup menu for file parameters.
 
 - Renamed "Open Preview" to "Preview Image" in the popup menu for image file parameters.


Licenses and key files:

 - Fixed problems auto-updating key files that have expired or are are invalid because of maintenance date.

 - Changes to splash screen for expired keys and keys that are invalid because of maintenance date: text more accurately describes the reason why it's running in non-commercial mode (expiry or maintenance date) and that text is coloured red. In this situation the "Buy Now" button is labeled "Upgrade/Renew" and opens a different URL in the browser.

 - If running in Free mode because of an expired license, when you check for updates it will still report available versions according to what type the license was before it expired.


===========
VERSION 4.1
===========

======================
Build 4.1.25 (Release)
======================

Icon changes (Windows only):

 - Updated the app icon to solve scaling/resolution issues in various situations.

 - Removed the '4' from the icon that is associated with TGD files.

We've made some changes to help you understand the status of your license, and to see what's new when software updates are available:

 - Check for Updates (Updates Available Window): Made some changes to what's shown when there are updates that are outside of maintenance. The main improvement is that you can click on a "View Latest Update" button to see the change log of the latest version and instructions for renewing maintenance.

 - The Help menu has a new item called "Show License Info" which brings up a message box with detailed license info and options to copy that info to the clipboard.
 
 - For users with a time-limited license, the menu item "Reveal Licence Key File" is shown even when the license has expired.

 - Detailed license info is printed to stdout when the app starts.

Improved security of licenses for systems administrators.

======================
Build 4.1.21 (Release)
======================

Fixed another bug which caused most render elements to ignore the EXR bit depth setting. SurfRgb, SurfAlpha and SurfDepth were not affected by this bug.

Fixed a problem with "smooth surface" enabled in Compute Terrain and Compute Normal which would cause some renders to hang. Also fixed another problem in those shaders which could have made some shaders render incorrectly since v4.1.

======================
Build 4.1.19 (Release)
======================

Mac and Linux only: Fixed mistakes with the following object rendering modes: invisible, shadowless, invisible to other rays, force displacement.

======================
Build 4.1.18 (Release)
======================

32-bit EXR option works correctly for command line render, Sequence Render and Render All to Disk.

Fixed a bug that affected populations anchored to displaceable objects. This problem occurred in builds 4.1.15, 4.1.16 and 4.1.17.

Plugins can query the last-known filename of the project using Root()->FindParam("filename").

======================
Build 4.1.17 (Release)
======================

Fixed a problem with loading some 8-bit greyscale images with dimensions larger than 32767.

Reduced the memory requirements for some 8-bit greyscale images by no longer converting internally to RGBA.

"Voxel scattering quality" slider in GI Settings goes from 0 to 100 (although higher values can be entered). The default is still 50.

=============================
Build 4.1.15 (Frontier Build)
=============================

Professional edition only: "Holdout" mode is working again for ray-traced objects.

Corrected another problem in the handling of materials which may have led to crashes.

Fixed a couple of bugs which caused licensing problems if key files were placed in the program folder or custom key path.

No longer prints "AddClass: added class..." to stdout.

======================
Build 4.1.14 (Release)
======================

Fixed a crash bug in atmosphere with low exp heights.

Corrected a problem in the handling of materials which may have led to crashes in 4.1.11.

In Preferences you can choose 32 bit EXR for automatically saved renders.

Evaluation of lights while rendering may be slightly faster.

Windows only: updated to FBX 2016.1.2 from 2013.2.

Mac only: Changed the way the app bundle is signed.

Linux only: Resolved an openvdb dependency that prevented 4.1.11 from running properly on Linux.

======================
Build 4.1.11 (Release)
======================

The Linux render node is now built against the VFX Reference Platform CY2017.

Fixed Bug #693: Pausing a render could cause the application to freeze.


FASTER SHADERS


Approx 2.2x speedup of the Voronoi functions used by by Power Fractal Shade V3, Fake Stones Shader and non-smooth Voronoi function nodes.

Approx 1.4-1.5x speedup of the smooth Voronoi functions. These are used by Power Fractal Shader V3 when filtered by a Smoothing Filter Shader and are also used by the Smooth Voronoi function nodes.

Alpine Fractal Shader V2 is now about 12% faster.


FASTER/CLEANER CLOUD RENDERING


Terragen 4.1 now renders Cloud Layer V3 and Easy Cloud in a different way from 4.0. There is a new global control called "Voxel scattering quality" in GI Settings (on the GI in Clouds tab). This affects all cloud layers of type Cloud Layer V3 and Easy Cloud, and is independent of the cloud layers' individual quality parameters. The default value of 50 usually produces better images in less render time than Terragen 4.0.

Because of the above change, the "Quality" parameter on Easy Cloud and Cloud Layer V3 is now called "Ray-marching quality" in the GUI. It is no longer an overall quality control.

The default value for ray-marching quality on Easy Cloud has been reduced from 0.75 to 0.5 for faster rendering in most cases.

Reduced one of the main causes of variance in clouds that causes flickering, where clouds are lit by specular highlights or high values of "glow power" in the atmosphere or surrounding cloud layers. Now that this has been improved, you might be able to use lower settings for "Cloud GI quality" and that will reduce render times.

In Render GI settings on the GI in Clouds tab there is a parameter called "Cloud GI max ray depth". This applies to Cloud Layer V3 and Easy Cloud. It limits the maximum ray depth at which cloud voxel scattering includes light from other parts of the scene. If you have many cloud layers in the scene it's especially important to keep this number low (e.g. 1 or 2) to prevent long render times due to light interactions between cloud layers. This part of the renderer should be improved in future to allow higher ray depths without excessive render times.


MORE CLOUD CONTROL


Masking input for Easy Cloud. Not only can this be used to control the placement of clouds, you can also use it for interesting effects like making the base of the clouds more wispy or adding more variety to the clouds.

Increased the slider range for cloud altitude and cloud depth from 20,000 to 30,000. As usual, values outside this range can still be entered by hand.


CLEANER ATMOSPHERE RENDERING


Removed an unnecessary source of noise in atmosphere, especially noticeable in relatively short rays or when using a small number of samples. In many cases atmospheres will now render more accurately and with less noise.

Atmospheres no longer have a parameter to control sample jittering; samples are always jittered.


FASTER PREVIEWS


Changed how the RTP samples/refines the image. This improves parallelism towards the end of the render, reducing total render time.

Changed how the RTP chooses how many threads to use on systems with 24 or more threads (12 or more cores with HT), to reduce the CPU load without sacrificing speed on hyper-threaded systems.

Changed how the 3D Preview in non-RTP mode chooses how many threads to use for various passes, reducing the CPU load but also improving speed, especially on hyper-threaded systems with 24 or more threads (12 cores with HT).


32-BIT EXR


32-bit EXR for rendered images: When saving EXR images from the Render View, you can choose between 16 bit (half float) and 32 bit (full float) precision. We also added an EXR Options button to the render node's Sequence/Output tab, next to the TIFF Options button. You can use this to choose between 16 bit (half float) and 32 bit (full float) for EXR files rendered with Render to Disk and Sequence Render (including command line rendering).

32-bit EXR for heightfields: Heightfields saved to EXR now save to 32-bit float precision.

When saving heightfields to EXR, a single-channel EXR is produced with data in the "Y" channel.


BETTER GI


Fixed some problems with the interpolation of GI cache samples at render time (affects renders with cache files and without cache files).


RENDERER CHANGES


Pixels are updated with final anti-aliased quality more frequently while rendering is in progress. Pixel reconstruction has been optimised so this shouldn't add much to render times. Some renders will finish slightly faster than before.

Boosted the speed of some renders by ignoring bump mapping in certain types of GI and reflection rays where we believe it's unlikely to be important to the final image.

New command line args -oxsubfolders and -oxsubfolders=no which override the "create subfolders" option in the project's render node.


IMPROVED MERGE SHADER


Merge Shader has a new option to select between different texture spaces that are used when evaluating the inputs. They are designed to solve some problems such as correctly aligning displacement with colour/shading.

"Legacy" works as it did previously, so colour/shading doesn't always match with displacement.

"Current texture space (most uses)" is similar to "Legacy" with some improvements to the state of the normals to give more correct results. However, in this mode colour/shading doesn't always match with displacement.

"Undisplaced space (for alignment)" sets texture coordinates and normals from the original undisplaced surface to ensure alignment between colour/shading and displacement, but is not ideal in all situations. For example, if the Merge Shader is on a side branch (e.g. as a Child Layer of a Surface Layer) and the texture coords or normals were modified higher up the main branch before the side branch is evaluated, the modified texture coords and normals will be ignored. In this case "Current texture space (more uses)" is a better choice.


SMOOTHING FILTER SHADER


New shader: Smoothing Filter Shader. This asks upstream shaders to smooth away details at the specified scale. The scale can be modulated with a function input. However, it only works in a few specific cases at the moment. We need to modify the code for each shader to make it react correctly to the smoothing request. Currently only three shaders support smoothing: Power Fractal Shader v3, Cloud Fractal v3 and Fractal Warp Shader. We'd like to add smoothing support to more shaders in future.

"Obey downstream smoothing filters" is an option you can turn on or off for each Power Fractal Shader V3, Cloud Fractal Shader V3 and Fractal Warp Shader.


OTHER SHADER CHANGES


Power Fractal Shader V3: "Better colour continuity" and "Better displacement continuity" parameters on the Tweaks tab. When enabled, the shader uses more precise math to remove C1 discontinuities in the 'variation' feature. It also changes how the smoothing of ridges and gullies is performed (in Perlin Ridges, Perlin Billows and Perlin Mix flavours) to give nicer results. "Better_displacement_continuity" is enabled automatically for newly created nodes, but not for existing ones.

Image Map Shader: When you switch to Camera projection the shader automatically enables "position_center" and sets the position to (0.5,0.5,0.0). As in previous versions, it also sets the size to (1,1). You still need to adjust the size parameters match the aspect ratio, but all other settings should be good.

Image Map Shader: When you switch to UV Projection the shader automatically sets the position to (0,0,0). As in previous versions, it also enabled "position_lower_left" and sets size to (1,1).

Reflective Shader: Prevents negative roughness when using a roughness function. Negative results are now clamped to 0.

Transform Input Shader: Added "Use undisplaced space" option.

Transform Merge Shader: Added "Use undisplaced space" option.

Changes to the OBJ Reader's .mtl reader: If index of refraction (IOR) specified by 'Ni' in the .mtl is 0 or less, we use the Default Shader's default IOR of 1.5 because the value in the .mtl is surely wrong. If the .mtl has an IOR between 0 and 1, Terragen uses its reciprocal (1/x) so that the value is greater than 1, because Terragen's reflective shaders currently only work with IOR greater than or equal to 1. If the .mtl doesn't specify 'Ni' then we continue to use the Default Shader's default IOR of 1.5 as we always did.


LIGHTING CONTROLS


Light Source and Spotlight have parameters to enable/disable "light surfaces" and "light atmosphere" just like Sunlight has.

Some parameter labels have changed in Sunlight, Light Source and Spotlight nodes.

Image File Processor (Professional Edition only) has an option to apply some experimental HDR processing.


OTHER PREVIEW IMPROVEMENTS


Fixed bug #578: Wireframe and texture previews were incorrectly clipping when "Use vertical fov" was selected on the camera.

Fixed bug with RTP projection when "Use vertical fov" was selected on the camera.

RTP displays elapsed time (seconds and tenths of a second) if more than 5 seconds have elapsed, or if finished.


MISCELLANEOUS


Changes to the update checker system. When software updates are available for download, the window that shows the updates has changed. Recommended Updates (Release builds) are shown separately from Optional Updates (Frontier builds). If maintenance has expired and there are new versions that fall outside of the maintenance period then it also gives you a button to renew your maintenance.

Other changes to the update checker and update notification system.

When using Gather Project, the "Project Assets" folder is now called "Project_Assets" (has an underscore).

Some changes to the handling of license key files. In some circumstances Terragen will attempt to update key files with new information from the server at planetside.co.uk.

View menu and 3D Preview context menu no longer show the item to open the 3D Preview in a new window. This will be added back in a future release.

There are fewer situations where no parameter view is shown below the Node List at the top left of the GUI.

Some API changes, but they should not affect end users of third-party plugins that are already published.


===========
VERSION 4.0
===========

============
Build 4.0.04
============

Performance fix: Many scenes with clouds will render much faster in this build. Mac users will see the biggest improvement, but it also affects Windows users especially at high thread counts.

The Geog Image Map Shader has been adjusted to fix some problems loading certain files.

Node creation menus for shaders and heightfields have been made easier to read by simplifying the item names.

We've rearranged the UI for the render node so that it's simpler and more logically organised:

- "Quality" tab has been simplified.
- "Ray trace objects" has moved to the Advanced tab. You should usually have this turned on.
- "More" tab and "Effects" tab have been arranged into new tabs called "Filter" and "Tonemap", and their advanced settings have moved elsewhere.
- "Detail blending" has moved to Subdiv Settings.
- Subdiv Settings are now accessible from a button on the Advanced tab.
- "Minimum threads" parameter is no longer available.
- "Size of subdiv cache in Mb" and "Preallocate subdiv cache" have moved to Subdiv Settings.
- Professional edition only: Removed the Layers tab and put "Render layer" below "Camera".

Settings to control the size of the subdiv cache will *not* be carried over from previous projects. The renderer now ignores these settings unless "Override size of subdiv cache" is turned on. By default it's off. With override off, a cache size is chosen automatically at the beginning of each render using the formula cacheSizeInMb = 250 * numThreads + 150.

Simpler version numbers: Public release builds don't display the fourth number '.0' on the splash screen anymore.

Some other minor changes have been made to the UI.

==============
Build 4.0.01.0
==============

Pausing or aborting a render with clouds is now much more responsive.

Free Edition and Creative Edition: Unintentionally, voxel buffers and 2D shadow maps were being disabled when loading projects, loading clip files with cloud nodes or pasting/duplicating cloud nodes. This could cause very long render times. This has now been fixed.

==============
Build 4.0.00.0
==============

GENERAL


Windows only: Installer creates an application called "Terragen 4" which is distinct from Terragen 3. You can have Terragen 3, Terragen 4, Terragen 4 Alpha and Terragen 4 Beta installed at the same time if you want.

Library files, Preferences, Custom Bindings settings and automatically-saved renders of Terragen 4 are stored separately from those of Terragen 3, Terragen 4 Beta or Terragen 4 Alpha.

Updated license text (company name and jurisdiction).

We have a new icon and a new splash screen.


FASTER RENDERING


Intel's Embree ray tracing core is now used to accelerate ray tracing of imported objects and non-displaceable built-in objects (Card, Rock and Grass Clump), and populations thereof. This provides an incredible speed boost in many scenes. Please note that RAM requirements have increased to support Embree.

Fixed a bug that was hurting the speed of ray traced shadows, independent of Embree.

Optimised ray tracing for scenes with no populations and scenes with few populations compared to individual objects.


3D PREVIEW


Ray Traced Preview (RTP) mode. This can be toggled on or off with the new "RTP" button on the 3D Preview, or by using the 'r' key (can be customised) if the preview has keyboard focus.

If a render crop is enabled, the RTP renders without shading, atmosphere or lighting on pixels outside the crop region. This way you can do faster region-of-interest previews.

The non-RTP micropoly preview's initial detail depends on the number of cores/threads if the HD button is pressed.

"Accelerate empty space" in clouds is ignored in previews because it greatly reduces interactivity (even though it helps full renders).

The "3 Button Mouse" preset has the same bindings as the "Universal" preset for orbiting in the 3D Preview. That is, either Alt+LMB or MMB.

'r' is no longer the default for resetting previews. 'r' is the default key for toggling RTP.

Context menu in shader and object previews has a Reset Preview command because there is no longer a default shortcut.

The Alt-R keyboard shortcut has been removed from the "Reset" button on the 3D Preview to reduce confusion with RTP toggle key 'r'.

Read more about the RTP here: http://www.planetside.co.uk/forums/index.php/topic,21730.0.html


OZONE


"Ozone factor" added to planet atmosphere. This controls the absorption strength of a simulated ozone layer in the atmosphere, which absorbs red and green light to produce bluer skies especially during sunrise and sunset. It strongly affects views from high altitude too. The height profile of the ozone layer is hard-coded to simulate an average Earth atmosphere, but automatically scales in proportion to the "bluesky exp height" if it varies from the default of 8000. When bluesky exp height is at the default value of 8000 the ozone layer occurs between 12km and 63km, peaking in density at around 20km. Density also changes in proportion to bluesky density to produce realistic results in a variety of setups.

The default project has ozone factor at 0.5. Newly created planet atmospheres also set ozone factor to 0.5.


CLOUDS


New node: Cloud Layer V3. This has a new voxel-based light scattering algorithm and lots of other improvements.

New node: Easy Cloud. This node will improve in future versions as we refine the cloud models and add more controls.

The "Add Cloud Layer" menu has 8 new items to create Easy Cloud nodes for low-level and mid-level clouds of different sizes. Some other volumetric cloud presets in the Add Cloud Layer menu (labeled "Generic") now use Cloud Layer V3 instead of V2.

Cloud Layer V2 has a new option: "View from space" shading model. It changes the behaviours of various parameters to avoid problems that are typically more visible when viewed from very high altitude. Added this to V2 for now, not V3, because this option is going to be most useful for global cloud layers and V3 doesn't support those yet.

The "Added Cloud Layer" menu has 3 new items to create global cloud layers: "Global: Dense", "Global: Thin" and "Global: Very Thin". These use Cloud Layer V2 and enable the new "View from space" shading model.

Cloud Layer V2 and Cloud Layer V3 show the cloud base altitude as a non-editable parameter.

Previously saved Cloud Layer V3 nodes will give a warning that "scattering_colour" is an unknown parameter, but this is OK.

Cloud Layer V3 and Easy Cloud enable "move textures with cloud" by default. In these nodes it also works slightly differently from Cloud Layer V2 to allow world space shaders to stay in the same place even when this option is on (this hasn't been properly tested).

Cloud Layer V3 and Easy Cloud require "Localise" to be enabled and prevent you from disabling it. The default radius is 50km.

Parameters for 2D shadow map and voxel buffer are no longer restricted to Professional edition; they appear in all editions of Terragen 4. This applies to all cloud nodes.

Voxel buffer resolution in clouds is now controlled by a "millions of voxels" parameter, which aims to generate voxels that are as uniformly scaled as possible.

Removed the anim button on some shadow map and voxel buffer parameters which we can't safely animate.

Corrected behaviour of clouds when both 2D shadow map and voxel buffer are enabled. This is going to change the look of renders that had both of these checked.

Voxel buffers in clouds are now generated on the fly instead of at the beginning of a render. This allows them to be previewed more effectively and also reduces some render times.


OBJECTS AND POPULATIONS


OBJ Reader no longer multiplies diffuse colour by 0.5 when reading materials.

Object readers' file sequence has parameters for "Sequence first", "Sequence last", "Frame offset", "Loop" and "Ping pong". In order to use file sequences, it still relies on %04d or some other valid formatter to be in the filename.

Reorganised GUIs for object readers and object generators, using two sets of tabs, resulting in cleaner, less busy layouts, and putting the Rock-specific and Grass Clump-specific parameters nearer the top.

Populator3 and Populator4 try to find a planet to link to whenever a valid terrain shader is connected, if the currently connected planet is invalid (which it may be after duplicating a population). They do this by searching downstream from the linked terrain shader, and then searching downstream from shaders higher up the main chain from the terrain shader in case the terrain shader is a distributary that doesn't output to the planet. They also do this OnFirstCreate(), but this will only work if a terrain shader called "Compute Terrain" exists. As a user you still have to connect a terrain shader after duplicating the population, but at least now you probably won't have to go to the Anchor tab to connect the planet as well.


OTHER RENDERER CHANGES


Image bloom and starburst effects in the render node. They are post processes when render has finished.

Experimental atmosphere bloom. This is a post process that affects atmosphere and clouds.

The render node "detail" parameter is now called "Micropoly detail" in the GUI.

Default "defer atmo/cloud" is ON. Default anti-aliasing is 2.

There is a new rendering option called "Defer all shading". This feature is BETA and might not always work correctly. Sometimes it can corrupt the final image (we've seen this when it's combined with GI Surface Details).

Partial-opacity shadows. The renderer can now render partially-opaque shadows of non-displaceable objects. Partial opacity is achieved with the Default Shader by using opacity less than 1 or using an opacity texture or opacity functon (many vegetation models already do this, with partial opacity occurring on anti-aliased edges in the texture). For now, this only works for shadows, while opacity visible to the camera still works as before: it can only be either 0 or 1 and each pixel will jump to whichever value is closest. The RTP has an extra capability that's not in the main render: the RTP can render these partial opacities visible to the camera as well, but we'll change this in future to match the capabilities of the main renderer. Please note: Partial opacity is not the same as refractive transparency in the Glass Shader and Water Shader. If you want to use this new feature to render semi-transparent shadows of glass-like objects, we recommend that you use a separate INVISIBLE object for casting shadows with reduced opacity, while keeping the visible object fully opaque (opacity 1) with shadows turned off. This will avoid surprises in future versions of Terragen that can render partial opacity visible to the camera.

Render GI Settings have been rearranged into 3 tabs: "Prepass", "Image Pass" and "GI in Clouds".

Render GI Settings have a new parameter "Cloud GI quality". This affects the accuracy of the background/indirect lighting component of TG4's new clouds (Cloud Layer V3 and Easy Cloud), but doesn't affect Cloud Layer V2. Low quality settings tend to produce flicker in animations or sometimes blotchy looking lighting in the clouds, but render faster. Each step down in the menu represents an increase in the quality by doubling the number of light samples, but also an increase in render time.

Render nodes' default TIFF compression mode is LZW. If a project is loaded that was saved with v3.3 or earlier, TG4 will apply the new LZW default, but projects saved with v3.4 will already have some settings written to the project and 3.4 defaulted to "None".

The Surface Depth render element can be output as TIFF. It is no longer forced to be EXR like most other render elements; it will be output as TIFF when the extra output filename ends with .tif or .tiff (either 8 bit or 16 bit according to the chosen TIFF options).

Those render elements that are not forced to be EXR (Rgb, Alpha and Surface Depth) are forced to be TIFF (".tif" or ".tiff" extensions are allowed). Only EXR and TIFF are supported for render elements (extra output images). Before this change, non-TIFF and non-BMP extensions would be allowed in the filename but this would mask the fact that they would really save as SGI RGBs. Now they will be saved as TIFF and have the extension ".tif".

Fixed bug in trTransform::Normal(). This fixes bug #197: Displacement is incorrectly scaled when object is scaled.


SHADERS


Fractal Warp Shader now has a "scale filter" input, which logarithmically scales the maximum feature scale of the fractal. A value of 1 allows warping at all scales. A value of 0.5 filters out scales greater than 1 thousandth of the main scale parameter. A value of 0 filters out scales greater than 1 millionth of the main scale parameter. BTW, a similar idea would be nice in the Power Fractal.

Fake Stones Shader has inputs for a scale function and a tallness function.

Glass Shader has a specular roughness function parameter (like the Default Shader).

ReflectiveShader has a specular roughness function parameter (like the Default Shader).

If the Water Shader is enabled it calls the input shader so that the input can affect opacity, but sets {doCo,doCd,doCs,doCe} to false before doing so. This allows the opacity trick that was broken by a change in March 2008. The behaviour is unchanged for disabled water shaders (they simply call the input).

New function: Voronoi 3D Cell Colour function node (a colour analog of the existing Voronoi 3D Cell Scalar).

New functions: AddMultipliedColour, AddMultipliedScalar, AddMultipliedVector, MultiplyComplementColour, MultiplyComplementScalar.

Default Shader now works as a value source (outputting its diffuse colour) when plugged in as a function or mask to another shader. Most other shaders already do this.


MISC


The camera's default stereo mode is now "Parallel" (was previously "Off axis"). Also, if a camera's stereo mode is "Parallel", the control for "Zero parallax distance" is disabled in the GUI.

Middle Mouse Button is now included in the default bindings for "Basic Pan", except in 1- and 2-button presets. Basic Pan is used for scrolling in the Network View and the Animation Panel, by default.

The default bindings now allow you to use either 'Tab' or 'n' to open the Quick Node Palette (in the Node Network). If you've customised bindings you may need to reset bindings to see this change, or you can add this binding yourself.

Network View Preferences "Use line smoothing" now defaults to True on Windows as well as Mac.

Prevented improper image flipping when adding previews to projects.

Gather Project errors are a little more specific.

Errors are printed to stderr instead of stdout.

No longer prints to console when creating or destroying nodes.

Adjusted the automatic colour choice of node labels so that they don't change from black to white when the network view goes into "dark mode" (which happens automatically when choosing a dark background colour).

Some GUI background colour changes.

Temporarily disabled the up/down steppers in parameter views.

