binstream Posted August 5, 2016 Share Posted August 5, 2016 Key Changes Round Earth according to geo-coordinates Completely revamped Landscape tool, improved its usability (experimental) Updated terrain materials: metalness workflow, no limit on the number of layers and materials HTC Vive support Metalness workflow by default Reworked depth of field (DoF) effect Configurable TAA Improved support for screen-space raytraced reflections Implemented GGX mipmaps Global illumination effect by box projection for EnvironmentProbe Bow/stern ship wake waves Shoreline with physics interaction Improved underwater rendering: added caustics and light shafts Experimental new editor with completely new UI and integrated assets browser API improvements: C# mathlib, better callbacks, topology methods, and more New video tutorials Round Earth UNIGINE 2 Sim now lets you create round (ellipsoid) 3D Earth: objects can be placed in geo-coordinates (longitude / latitude / altitude) and visualized correctly even for high-altitude in-atmosphere flight. We also added support for high-res terrain insets that are bent according the ellipsoid model. This enables precisely synchronized scenarios for flight simulation or similar tasks (continent-wide road network planning, precise weapon simulation, etc). And the power of UNIGINE's 64-bit coordinates precision is now used to its full extent. You can create a completely curved world, and object physics behavior will be correct (however, it is important to make sure that the gravity vector is directed correctly in different points). To bend object geometry, create a GeodeticPivot node, make your objects its children, specify settings and click the Make Curve button. At the moment, the GeodeticPivot node works with the following node types: ObjectTerrain ObjectWaterGlobal ObjectSky ObjectMeshStatic DecalMesh ObjectMeshClutter ObjectGrass WorldClutter There are built-in WGS84, GRS80, GRS67, Airy 1830 and International 1924 reference ellipsoids and you can easily add custom geodetic datums (or another planet reference ellipsoid datums). You would only need to specify the semi-major axis, and the flattening coefficient. Yes, that simple. Our plans for the next releases are: Low-res template of the entire planet Earth Seamless atmosphere-to-space rendering transition Support for the rest of the object types Updated Terrain Materials Terrain material system has been switched to metalness workflow. There's no limit on the number of layers and materials anymore. We reworked the material system and got rid of index textures. Terrain materials hierarchy became more clear: Terrain Base specifies the base relief of the terrain. Layers are used to group materials and specify their masks. Materials are used for terrain visual representation. Mask Base logic has been changed to Detail material logic: detail materials use the mask of the "parent" material. Additional changes are: Removed diffuse and specular maps / texture arrays (due to metalness workflow) Added albedo and height maps / texture arrays Added roughness maps Added albedo color and roughness parameter modulation Added normal_scale parameter to terrain_base material Added render_terrain_anisotropy console command that changes terrain textures anisotropy Added render_terrain_refined_albedo, render_terrain_refined_normal and render_terrain_refined_mask console commands that allow using coarse / refined textures for terrain Added new terrain material states: subtract_materials, subtract_layers, material_detail, material_roughness, material_normal Experimental Landscape Tool Huge terrains are one of the UNIGINE's key features, so in order to streamline workflow and improve productivity of teams creating them we have completely rewritten the Landscape tool. This experimental tool is available in Sim edition only. Currently it features the following: Support for multiple data layers aligned by geo-coordinates Direct loading of standard file formats: GeoTIFF, DEM, JP2 and many more Easy-to-use user interface Performance-optimized terrain generation Support for curved world model Next iterations of the Landscape tool are going to introduce procedural rules system, which will be used to procedurally refine / generate content based on geo-data (both raster and vector). Also, non-geo data support is planned for 2.4. Old Landscape plugin for UnigineEditor is still available as well, until the new tool will gain all of its features. HTC Vive support AppVive plugin provides support for HTC Vive virtual reality hardware. By using engine.vive API methods, you can implement your own VR applications with HTC Vive support. Example project is provided in the Samples (Samples -> UnigineScript -> App -> app_vive_00) section of Unigine SDK Browser. Metalness Workflow by Default Metalness workflow materials properties are, compared to specular workflow, much closer to the real-world ones. Being based on the real, physical behavior it is thus somewhat easier for content authors to understand. Most of the advanced digital texture creation tools (3D-Coat, Substance Painter, etc.) are switching to metalness workflow these days. We decided to switch to metalness as well and made a huge internal change in the renderer and shaders with this release. Specular workflow is still supported, but metalness is used by default from now on. Because of that change, UUSL now provides a new GBuffer structure that supports both specular and metalness workflows, as well as methods to convert specular GBuffer to metalness. Improved Screen-Space Raytraced Reflections In this release we restored SSR support with better visual quality. Improved GGX Mipmaps We added GGX mips for EnvironmentProbe cubemaps: when you grab the cubemap texture via the EnvironmentProbe node interface, the engine automatically creates GGX mip cubemaps. GGX mips have better quality and meet all the requirements of physically-based rendering. It doesn't work for EnvironmentProbe's dynamic reflections. To use this feature in your existing projects, you should re-grab all the cubemap textures for your EnvironmentProbes. Parallax Depth Cutout Introduced parallax depth cutout technique that improves parallax mapping quality.It's visually great: you can see how a mere texture plane looks almost like real geometry. Objects with parallax depth cutout option enabled connect extremely smoothly with the real mesh objects (see the picture below). Also, this technique improves the SSAO calculation on surfaces with parallax maps. New Depth of Field Effect DoF effect has been completely reworked in order to achieve photorealistic effect: Enabled Bokeh effect by default. Two more physically correct Bokeh shapes are available: circle and ring Improved transitions between in-focus and out-of-focus parts of the image Simplified effect settings Added chromatic aberration support Added visualizer: Rendering -> Buffers -> DoF mask An example can be found in the Samples demo (Camera Effects section). Added DOF-related console commands for fine tuning: render_dof_resolution, render_dof_quality, render_dof_bokeh_mode, render_dof_increased_accuracy, render_dof_focus_improvement. Additional bokeh shapes are slated for future releases. Configurable TAA Added flexible TAA settings that enable fine-tuning TAA for different scenes types (Render Settings -> TAA in UnigineEditor). Those settings let you: Control the number of frames for velocity buffer. That reduces the blurring in dynamic scenes with a lot of moving objects Clamp the color of the current and previous frame. The image becomes more sharp. Fix the flickering of bright thin wires, ropes and lines in dark scenes Control the AA detail level. The respective console commands are render_taa_velocity_clamping, render_taa_color_clamping, render_taa_fix_flicker. GI by Box Projection The fact that EnvironmentProbe in UNIGINE 2 can define environment lighting enables reusing it for Global Illumination effects too. In addition to the traditional method of projecting a cubemap onto a sphere, we also provide an optional box projection method (formally, projection onto a cuboid). That works (much) better with indoor scenes (where the rooms tend to be boxes), or box-shaped outdoor scenes (think of a back alley between buildings). Corners are specially treated, too: objects closer to corners are more glossy, that is both more physically correct, and helps fight artifacts. Note that the effect is mostly visible next to the walls. Moving objects can cast GI light bounces, too; for that you need to enable "dynamic" flag in the EnvironmentProbe (otherwise moving objects will just be accepting the GI bounces from the environment). It is also recommended to use this feature together with SSR to achieve better visual results. Water Improvements Ship Wake Effects New FieldHeight node with particle systems can provide an effect of a stern wave (when moving vessels leave a long trail on the water) and a so-called bow wave in front of vessels. FieldHeight object uses its own height map texture to change global water heights. You can create a new FieldHeight object either in UnigineEditor (Create -> Effects -> Field Height), or programmatically by using the FieldHeight class. render_field_height_resolution console command controls the FieldHeight height texture resolution. Oil Platform demo provides an example of both stern and bow waves. Shoreline By using FieldShoreline, you can create nice swash zones, where waves smoothly fade out right next to the shore. It also adds an effect of wet sand and wet objects on the shore: stones, litter, etc. You can create a FieldShoreline node via UnigineEditor (Create -> Effects -> Field Shoreline) or programmatically by using the FieldShoreline class. The resolution of FieldShoreline texture can be set by the render_field_shoreline_resolution console command. Also you can enable / disable wetness effect by using render_water_shoreline_wetness console command. Examples can be found in Port Angeles demo and in the Samples (Water section) demo. Underwater Improvements Underwater scenes are now somewhat more realistic, with the advent of the following two changes: Added caustics (can be enabled / disabled in the water_global_base material) Improved underwater light shafts (can be enabled / disabled by render_water_shafts console command) Decal Improvements Added 3D texture for detail state of decal_base material: you can set transformation of the 3D texture now Added world align mode for decals (decal-independent UV for projection) Added alpha blending mode for decals (detail and base alpha multiplication) Added water decals option: decals can be projected onto the water surface (you should enable the water decal option in decal_base material) Added screen projection state to decal_base material (mesh decals are projected onto each surface behind the mesh) Restored parallax support for decal_base material Other Renderer Improvements Restored support for orthographic projection camera Added inverse depth (inverse Z buffer) support instead of logarithmic Renamed base_transform to uv_transform material parameter Removed deferred transparent pass: all transparent objects are rendered in the forward pass now Added support for the forward transparent pass for LightEnvironmentProbe Fixed GGX model Added parallax for decals and shadows Added colored specular highlights for light sources Added Quad Buffered Stereo support for AppProjection Added render_water_opacity_depth console command for water soft interaction (for particles). This command also activates the DoF effect for water Renamed Decal Mask to Material Mask Moved Alpha Test option to Transparency options Added RG11B10F support, it can provide noticeable performance boost for interior scenes (disabled by default) Added *_sh postfix for shader textures (similar to *_alb or other texture postfixes) Added new console commands to control the per-object light source count limit in the forward rendering material: render_world_lights_per_forward_object, render_omni_lights_per_forward_object, render_proj_lights_per_forward_object, render_env_probes_per_forward_object Added a per-material option to disable post-effects (SSAO, SSR, SSS, DOF, Motion Blur, Sun shafts) in materials' State tab. Added triangle blur for render_blur material Added disable_soft_shadows parameter to particles_base material Added jitter transparency state to mesh_base material (alpha test is performed by using noise) Added MaxWarmingTime parameter for Particle Systems Replaced render_shader_define console variable by render_defines console command Added render_textures_max_resolution console command to control max resolution of the textures. Fixed velocity calculations for multi-window rendering (AppWall, AppProjection, etc.) Added support for QuadBuffered stereo in AppProjection Fixed object shaking in WidgetSpriteViewport Various bugfixes Experimental New Editor There were a lot of UnigineEditor improvement requests, we heard you, and our Tools Team has been working on a shiny new version for a few months now. Today, we're proud to announce that the core internal subsystems are all done, we have started working on the GUI, and the experimental new editor build is now immediately available to customers starting with the 2.3 release. Key features: Completely rewritten from scratch in C++ (faster, better architecture) Greatly improved usability Qt-based interface (native widget look and feel) Deep integration with the asset browser Hot loading into the running engine instance is back! (editor2_load / editor2_quit console commands) Customizable UI layout with dockable panels Extensible by plugins Please bear in mind that this isn't yet a production-ready version, but rather an early technical preview. To try it out, check Options -> Use Editor2 (experimental) in the SDK Browser. Production version will be released along with SDK 2.4. FBX Export Improvements Added support for object dynamic meshes Added support for vertex colors Added enabling / disabling dialog option for exporting lights, cameras, normal maps Other minor bugfixes Improved API C++ callbacks changes: declarations more strict from now on. For example, old callback declaration could look like: virtual void setEnterCallback(CallbackBase *func) const = 0; virtual void setLeaveCallback(CallbackBase *func) const = 0; And the respective new one is: virtual void setEnterCallback(Unigine::CallbackBase1< Ptr<Body> > * func) = 0; virtual void setLeaveCallback(Unigine::CallbackBase1< Ptr<Body> > * func) = 0; So as you see, the callbacks are now (partially) type-safe. Other API improvements and changes: Fixed C# API set*Callbacks Fixed PhysicalTrigger "Leave" callback behavior Added all the missing methods to C# API MathLib Added convenient math constants to C++ / C# API: vec2::ZERO, vec2::ONE, vec2::EPS, vec2::INF (and the same for dvec2, vec3/dvec3, vec3/dvec4) vec3::UP, vec3::DOWN, vec3::FORWARD, vec3::BACK, vec3::RIGHT, vec3::LEFT (and the same for dvec3) hvec2::ZERO, hvec2::ONE (and the same for hvec3, hvec4, ivec2, ivec3, ivec4, bvec4) mat2::ZERO, mat2::ONE, mat2::IDENTITY (and the same for mat3, mat4, dmat4) quat::ZERO, quat::IDENTITY Old vec2_zero-style constants are marked as deprecated and will be removed in the further releases. Added new methods for mat4 / dmat4 to C++ / C# API: getUp(), getDown(), getForward(), getBack(), getRight(), getLeft() Added new MathLib functions: getAngle() to return non-negative convex angle (non-reflex) within 0 < a < 180 getAngle() to return convex angle (non-reflex) (can be negative) rotateTowards() to rotate quat / vec3 about some max angle Renamed C++ UnigineUtils.h to UnigineSort.h Added new UnigineUtils.h which contains different helper functions Added Camera::getDirectionFromScreen() method to C++ API (similar to UnigineScript's getPlayerMouseDirection() from utils.h) Fixed Viewport::renderNodeImage2D() incorrect behavior Added VIEWPORT_SKIP_FORMAT_RG11B10 flag for RG11B10 rendering control Added a local_space flag to Viewport::renderImageCube() method:camera angle is now accounted for when local_space==true Added flat/curved topology-related methods to Node class (supported by ObjectMeshStatic / DecalMesh / ObjectTerrain nodes): Node::updateTopology() bends the geometry if the node has parent GeodeticPivot Node::clearTopology() rreverts bent geometry back to flat Added flat/curved topology-related functions to ObjectTerrain Added new ObjectParticles methods: getBoundBoxParticles(), getBoundBoxSimulation() Added new FileSystem methods: addDirectory(), reloadPackage() Added Stream::getType() method with available type STREAM_BLOB | STREAM_FILE | STREAM_SOCKET | STREAM_USER values Added new property methods and flags for LightEnvironmentProbe Added Geometry class functions to work with geometry Updated Node class functions Updated Player class functions Updated Camera class functions Updated DOF methods in the Render class The complete list of API changes is available in the API Migration Guide. UUSL Additions Added checkMask() method to check if the given bits are all set in a bitmask Added isOrtho() method to check whether the camera's projection is orthographic or not Added INIT_TEXTURE_INT() for int texture initialization Added loadGBufferVelocity() and loadGBufferMaterialMask() methods to GBuffer. Changed TEXTURE_2D_CUBIC() function arguments Added new constant masks Added new shader parameters: s_material_mask, s_sky_up, s_sky_altitude, s_sky_transform Added component-wise min/max functions to UUSL maxFloat2() / maxFloat3() / maxFloat4() support up to four arguments minFloat2() / minFloat3() / minFloat4() support up to four arguments Added uint32 to half2 decompression function floatDecompressHalf1616() Added geodetic-related functions: struct GeodeticTopology, basic GPU-side curved geometry topology storage geodeticTopologyDefault() constructor geodeticTopologyCalculateUV() to calculate topology texture UV coordinates geodeticTopologyCalculateCurved() to fetch curved data from topology texture geodeticMul4() to apply transformation to curved point geodeticBasis() to build transformation based on curved data Added support for unpackHalf2x16 (for OS X) from GLSL 4.2 standard Miscellaneous Added support for images larger than 2 GB. Added support for absolute paths in state_save / state_restore Updated Oculus SDK to 1.6 Fixed crashes under Linux / Mac OS X platform on shutdown Various bugfixes and minor improvements Documentation Documentation improvements never cease to stop, and the following changes have been made based on your feedback: Added a Migration guide section for migrating your projects from 2.2.1 to 2.3 version Extended C++ / C# / UnigineScript API references with samples, code snippets and usage examples Updated (completely) the following articles: Getting Started article with engine terminology overview for new users UUSL section articles section for rendering programmers Terrain Material article for content creators Added new articles: FieldShoreline FieldHeight AppVive plugin Added more articles in Chinese Improved some technical issues of online documentation: Improved search engine (for more relevant results) Improved UnigineScript and UUSL code highlighting Other minor changes and fixes Offline documentation is now available via the Knowledge section in the UNIGINE SDK Browser. You can download multiple different versions, as necessary. 1 Link to comment
silent Posted August 5, 2016 Share Posted August 5, 2016 Known Issues Engine (2.3, ver-2.3-6a8d10c): OpenGL + Multiple Envitonment Probes option + Alpha blend = artifacts on some nVidia GPUs (Kepler architecture) with a latest driver. Xml parsing methods getDMat4Data() / getDMat4Arg() are not working. Terrains are not working on Mac OS X SDKs (OpenGL Invalid error). Editor (2.3, ver-2.3-6a8d10c): Enabled Plays.TV from AMD will result in Editor instability. Solution: uninstall plays.tv completely. Console::get_variable(): can't find "render_bokeh" variable warnings when switching between Final Image (F2) and other rendernig modes. Add-ons / Plugins: SimLights add-on sample is not migrated (no rabbit lights available in sim_lights_00 world). Fixed in add-on version 2.3.1. SDK Browser (1.7.x): Sometimes buttons like "Run" will not react on click action. Run / Copy demo as project buttons available during the demo installation process. How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
cinetec_tech Posted August 5, 2016 Share Posted August 5, 2016 will editor2 plugin provide source code? Link to comment
ivan.cuevas Posted August 8, 2016 Share Posted August 8, 2016 Congratulations for the realease. Sincerely, in my humble opinion, Unigine has THE BEST water system for a game engine. Don't give up. B) Updating one project to this release it crashed when trying to set a material parameter expression: mat.setParameterExpression(mat.findParameter("base_transform"), format(base_transform_template, d*0.25f, s*0.05f, s*0.05f)); it has been solved by replacing "base_transform" by "uv_transform". mat.setParameterExpression(mat.findParameter("uv_transform"), format(base_transform_template, d*0.25f, s*0.05f, s*0.05f)); I didn't found this information in documentation, is this correct? Link to comment
binstream Posted August 8, 2016 Author Share Posted August 8, 2016 will editor2 plugin provide source code? For the moment we believe that proper plugin system and editor API will do the trick: https://developer.unigine.com/forum/topic/3528-editor-extension-api/ Link to comment
silent Posted August 8, 2016 Share Posted August 8, 2016 ivan.cuevas base_transform should be replaced to uv_transofrm. Upgrade script should do the trick for existing *.mat files (just check the utils/Upgrade/materials.h file), code should be migrated manually. We will update docs ASAP. How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
honya Posted August 10, 2016 Share Posted August 10, 2016 Hi, you remove function engine.editor.saveMesh, which function can use for get same result as from this removed function? Thanks. Honya Link to comment
silent Posted August 11, 2016 Share Posted August 11, 2016 honya You can use engine.utils.convertNodesToMesh(Mesh, Nodes[0]) instead. Something like that: Node nodes_to_convert[0]; Mesh mesh = new Mesh(); Node mb = engine.editor.getNodeByName("material_ball"); nodes_to_convert.append(mb); engine.utils.convertNodesToMesh(mesh, nodes_to_convert); mesh.save("test.mesh"); We will add this information to the documentation ASAP. Thanks! How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
aargh Posted August 11, 2016 Share Posted August 11, 2016 Hi Please help me how to run editor2 from command line. I tried to run it as a plugin, but no success. Thanks Link to comment
paralyzah Posted August 11, 2016 Share Posted August 11, 2016 Hi Please help me how to run editor2 from command line. I tried to run it as a plugin, but no success. Thanks hello If you want to run editor2 from command line for custom project, you can use next steps for example: 0. create custom project in sdk browser 1. copy folder editor2 from <sdk browser storage path>/sdks/professional_windows_2.3/data to <your_project_path>/data 2. copy libs Editor2_*.dll from <sdk browser storage path>/sdks/professional_windows_2.3/lib to <your_project_path>/bin 3. run engine (main_x64 for example) with next parameter -extern_plugin Editor2 Link to comment
Recommended Posts