Javier Cantón
Plain Concepts CTIO
Introduction
We are thrilled to announce a new major milestone for Evergine. Our latest release introduces a wide array of improvements and new features, performance enhancements, and new tools designed to empower developers across industries.
At Plain Concepts, we’ve carefully developed Evergine as the graphics engine that drives our internal projects. For over a decade, our licensing model has been built on a foundation of accessibility, ensuring that all users can benefit from its capabilities:
For this new release, we have focused on delivering native support for key file formats used in various industries, such as STL and DICOM in healthcare. We have also added more built-in runtime loaders for images and videos.
Additionally, we remain committed to staying up to date with the latest cutting-edge technologies used in industries like Energy and Construction. This includes support for reality capture new technologies such as Gaussian Splatting, making these innovations more accessible to many companies.
Finally, we have introduced new features based on feedback from our customers working on serious industrial projects. These include updates to Web templates, a new modular shader design, the Evergine.Mocks library for unit testing and enhanced AI tools in Evergine Studio.
Download Evergine 2025 today and start creating industrial real-time experiences!
In recent years, new techniques have emerged, significantly improving visual quality in reality capture scenarios. Neural Radiance Fields (NeRF), for example, have revolutionized scene capture using multiple photos or videos. We have been closely following these technological advancements, and in preview releases, we created a sample based on InstantNGP from Nvidia.
However, achieving high visual quality with these methods often requires neural networks that are computationally expensive to render.
To enable real-time rendering, a new approach called Gaussian Splatting has been introduced. This technique represents a 3D scene using a collection of Gaussian primitives, allowing for fast, high-quality rendering without requiring expensive neural network inference.
Over the past few months, we have been developing a new add-on that allows users to easily create Gaussian Splatting viewers for both desktop and web platforms. We are excited to announce that it is now publicly available!
Additionally, we have updated our previous sample based on InstantNGP to a new version that leverages Gaussian Splatting technology.
To explore this topic in-depth, visit: Gaussian Splatting Add-on in Evergine
Some of our healthcare customers are developing medical applications. In this industry, one of the most widely used file formats is DICOM (Digital Imaging and Communications in Medicine), which is commonly used to store and transmit medical images such as X-rays, CT scans, MRIs, and ultrasound images.
To support this, we decided to create a built-in addon that simplifies the development of DICOM viewers, making it easier to load and render medical images. This addon is fully supported on the web platform., allowing developers to create web-based medical imaging applications without additional complexity.
Since DICOM images can contain volumetric data, a specialized rendering pipeline is required. This pipeline utilizes ray tracing techniques to accurately visualize the 3D structure of medical scans.
Additionally, we have developed a new Evergine sample showcasing how to build a DICOM viewer using this new major release.
For more information, visit: DICOM Add-On
Last year, we introduced new built-in libraries in Evergine to enable asset loading at runtime. This allows users to load assets directly once the application has started, without the need to convert them to a specific engine format. As a result, loading and startup times have been reduced for both desktop and web applications. Web applications, in particular, benefit significantly, as they no longer need to wait for all content files to load before starting.
We have already published Evergine.Runtime.GLB and Evergine.Runtime.STL, and with this release, we are introducing two new runtime libraries:
Evergine.Runtimes.Images
Evergine.Runtimes.Videos
These new runtimes allow for the loading of images and videos at runtime. For more details on performance and supported platforms, continue reading at: New Images and Videos runtimes loaders
With the growing hype around AI conversational agents, many customers are now working on real-time 3D conversational avatars. To enhance their realism, we have introduced the subsurface scattering technique in the default rendering pipeline.
Subsurface Scattering (SSS) refers to the phenomenon where light scatters as it passes through a translucent surface. This effect is particularly noticeable in thinner parts of a model, such as human ears and noses.
By Using SSS, you can create more natural-looking organic materials, such as human skin, making 3D avatars more lifelike and expressive in real-time conversation across any language.
Here you can see and real example using the new rendering pipeline to create photorealistic skin materials:
More detailed information at: Subsurface Scattering (SSS) in Evergine
We continue to improve support for AI-powered asset generation. Now, Evergine supports the creation of 3D models using multi-view images within the Evergine Studio workflow. Users can upload pictures from multiple angles to generate higher-fidelity 3D models.
We have also included high-definition texture generation and support for customized styles to enhance the realism of the final model.
All these 3D assets will be included in the project’s asset content, making it easy to add them to the current scene and check lighting and materials for rapid prototyping.
This generation process is powered by the TripoAi API and its latest model version 2.5. If you want to learn more about how to start using this feature in Evergine Studio, you can find more information at Enhancing AI-Driven 3D Asset Generation
In the previous major release, we introduced a new asset called Library Effect, which allows users to write reusable code that can be shared across multiple shaders. Common functions, constants, variables, structs, and directives can be stored in a single library file and used across multiple effects.
In this new release, we have applied this shader architecture to the default Standard Effect, splitting the original single file into multiple libraries: Structures, Common, Material, Lighting, and Shadow.
Creating custom shaders that handle shadows or lighting is now easier than ever in Evergine.
Additionally, we have included a new Lighting Models shader library that supports several popular lighting models, including Phone, Blinn-Phong, Cook-Torrance, and Oren-Nayar.
If you are interested in learning how to start coding new effects using these libraries, you can find more information here: Standard Effect Modularization
Testing is crucial in product development and real industrial projects. However, it can be particularly challenging in 3D graphics development, as these applications rely on GPU-specific code that is often unavailable on build machines.
To address this, we are introducing the Evergine.Mocks library in this new release. This official library mocks all low-level objects that interact with the graphics card, enabling users to create unit tests for application logic and run then on machines without a GPU.
Additionally, the library includes helpers to mock the Windows system and input dispatchers, such as mouse, keyboard, and touch. Below is an example of a unit test using those Mocks.
Evergine is a dynamic and constantly evolving project, with new features regularly introduced to address emerging industrial challenges. Our commitment to innovation fuels Evergine’s growth, ensuring each release enhances efficiency and productivity across multiple industries.
We are currently exploring the official addition of more industrial file formats, including E57 and PCD for point cloud rendering, USD and USDZ as new model formats used by Apple NVidia and IFC for BIM architecture and energy sectors.
We have been working hard to add support for the Arm64 architecture, allowing users to compile projects on the latest MacOS, Windows, and Linux laptops. Our goal is to complete this task before the next major version, planned for 2025.
Additionally, we are developing new addons, such as a Point Cloud addon that enables the loading and rendering of large-scale point clouds. We have implemented a high-performance progressive rendering system, which we expect to make publicly available within the next release.
We are also continuing to experiment with AI-based models, aiming to integrate them into Evergine Studio to enhance productivity in asset generation.
Furthermore, we have initiated a new Evergine rendering pipeline with a redesigned architecture. This will allow us to unlock new capabilities, maximizing the performance of modern graphics APIs to handle massive amounts of geometry and more.
In the coming months, we will release minor updates focused on bug fixes, while the next major version is scheduled for September – October 2025.
Thank you for supporting Evergine! We remain committed to continuously improving Evergine’s technology to help companies build better products.
We hope you enjoy this new release!
Javier Cantón
Plain Concepts CTIO
Cookie | Duration | Description |
---|---|---|
__cfduid | 1 year | The cookie is used by cdn services like CloudFare to identify individual clients behind a shared IP address and apply security settings on a per-client basis. It does not correspond to any user ID in the web application and does not store any personally identifiable information. |
__cfduid | 29 days 23 hours 59 minutes | The cookie is used by cdn services like CloudFare to identify individual clients behind a shared IP address and apply security settings on a per-client basis. It does not correspond to any user ID in the web application and does not store any personally identifiable information. |
__cfduid | 1 year | The cookie is used by cdn services like CloudFare to identify individual clients behind a shared IP address and apply security settings on a per-client basis. It does not correspond to any user ID in the web application and does not store any personally identifiable information. |
__cfduid | 29 days 23 hours 59 minutes | The cookie is used by cdn services like CloudFare to identify individual clients behind a shared IP address and apply security settings on a per-client basis. It does not correspond to any user ID in the web application and does not store any personally identifiable information. |
_ga | 1 year | This cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assign a randomly generated number to identify unique visitors. |
_ga | 1 year | This cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assign a randomly generated number to identify unique visitors. |
_ga | 1 year | This cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assign a randomly generated number to identify unique visitors. |
_ga | 1 year | This cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assign a randomly generated number to identify unique visitors. |
_gat_UA-326213-2 | 1 year | No description |
_gat_UA-326213-2 | 1 year | No description |
_gat_UA-326213-2 | 1 year | No description |
_gat_UA-326213-2 | 1 year | No description |
_gid | 1 year | This cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the wbsite is doing. The data collected including the number visitors, the source where they have come from, and the pages viisted in an anonymous form. |
_gid | 1 year | This cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the wbsite is doing. The data collected including the number visitors, the source where they have come from, and the pages viisted in an anonymous form. |
_gid | 1 year | This cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the wbsite is doing. The data collected including the number visitors, the source where they have come from, and the pages viisted in an anonymous form. |
_gid | 1 year | This cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the wbsite is doing. The data collected including the number visitors, the source where they have come from, and the pages viisted in an anonymous form. |
attributionCookie | session | No description |
cookielawinfo-checkbox-analytics | 1 year | Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Analytics" category . |
cookielawinfo-checkbox-necessary | 1 year | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-necessary | 1 year | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
cookielawinfo-checkbox-non-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Non Necessary". |
cookielawinfo-checkbox-non-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Non Necessary". |
cookielawinfo-checkbox-non-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Non Necessary". |
cookielawinfo-checkbox-non-necessary | 1 year | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Non Necessary". |
cookielawinfo-checkbox-performance | 1 year | Set by the GDPR Cookie Consent plugin, this cookie is used to store the user consent for cookies in the category "Performance". |
cppro-ft | 1 year | No description |
cppro-ft | 7 years 1 months 12 days 23 hours 59 minutes | No description |
cppro-ft | 7 years 1 months 12 days 23 hours 59 minutes | No description |
cppro-ft | 1 year | No description |
cppro-ft-style | 1 year | No description |
cppro-ft-style | 1 year | No description |
cppro-ft-style | session | No description |
cppro-ft-style | session | No description |
cppro-ft-style-temp | 23 hours 59 minutes | No description |
cppro-ft-style-temp | 23 hours 59 minutes | No description |
cppro-ft-style-temp | 23 hours 59 minutes | No description |
cppro-ft-style-temp | 1 year | No description |
i18n | 10 years | No description available. |
IE-jwt | 62 years 6 months 9 days 9 hours | No description |
IE-LANG_CODE | 62 years 6 months 9 days 9 hours | No description |
IE-set_country | 62 years 6 months 9 days 9 hours | No description |
JSESSIONID | session | The JSESSIONID cookie is used by New Relic to store a session identifier so that New Relic can monitor session counts for an application. |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
viewed_cookie_policy | 1 year | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
viewed_cookie_policy | 1 year | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
VISITOR_INFO1_LIVE | 5 months 27 days | A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface. |
wmc | 9 years 11 months 30 days 11 hours 59 minutes | No description |
Cookie | Duration | Description |
---|---|---|
__cf_bm | 30 minutes | This cookie, set by Cloudflare, is used to support Cloudflare Bot Management. |
sp_landing | 1 day | The sp_landing is set by Spotify to implement audio content from Spotify on the website and also registers information on user interaction related to the audio content. |
sp_t | 1 year | The sp_t cookie is set by Spotify to implement audio content from Spotify on the website and also registers information on user interaction related to the audio content. |
Cookie | Duration | Description |
---|---|---|
_hjAbsoluteSessionInProgress | 1 year | No description |
_hjAbsoluteSessionInProgress | 1 year | No description |
_hjAbsoluteSessionInProgress | 1 year | No description |
_hjAbsoluteSessionInProgress | 1 year | No description |
_hjFirstSeen | 29 minutes | No description |
_hjFirstSeen | 29 minutes | No description |
_hjFirstSeen | 29 minutes | No description |
_hjFirstSeen | 1 year | No description |
_hjid | 11 months 29 days 23 hours 59 minutes | This cookie is set by Hotjar. This cookie is set when the customer first lands on a page with the Hotjar script. It is used to persist the random user ID, unique to that site on the browser. This ensures that behavior in subsequent visits to the same site will be attributed to the same user ID. |
_hjid | 11 months 29 days 23 hours 59 minutes | This cookie is set by Hotjar. This cookie is set when the customer first lands on a page with the Hotjar script. It is used to persist the random user ID, unique to that site on the browser. This ensures that behavior in subsequent visits to the same site will be attributed to the same user ID. |
_hjid | 1 year | This cookie is set by Hotjar. This cookie is set when the customer first lands on a page with the Hotjar script. It is used to persist the random user ID, unique to that site on the browser. This ensures that behavior in subsequent visits to the same site will be attributed to the same user ID. |
_hjid | 1 year | This cookie is set by Hotjar. This cookie is set when the customer first lands on a page with the Hotjar script. It is used to persist the random user ID, unique to that site on the browser. This ensures that behavior in subsequent visits to the same site will be attributed to the same user ID. |
_hjIncludedInPageviewSample | 1 year | No description |
_hjIncludedInPageviewSample | 1 year | No description |
_hjIncludedInPageviewSample | 1 year | No description |
_hjIncludedInPageviewSample | 1 year | No description |
_hjSession_1776154 | session | No description |
_hjSessionUser_1776154 | session | No description |
_hjTLDTest | 1 year | No description |
_hjTLDTest | 1 year | No description |
_hjTLDTest | session | No description |
_hjTLDTest | session | No description |
_lfa_test_cookie_stored | past | No description |
Cookie | Duration | Description |
---|---|---|
loglevel | never | No description available. |
prism_90878714 | 1 month | No description |
redirectFacebook | 2 minutes | No description |
YSC | session | YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages. |
yt-remote-connected-devices | never | YouTube sets this cookie to store the video preferences of the user using embedded YouTube video. |
yt-remote-device-id | never | YouTube sets this cookie to store the video preferences of the user using embedded YouTube video. |
yt.innertube::nextId | never | This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen. |
yt.innertube::requests | never | This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen. |