Posts

Retroreflection for Unreal Engine

Image
I’ve always been fascinated by light, but my understanding of it initially came from rendering systems in 3D editors and game engines. Over time, my curiosity grew beyond the solutions these tools provided. I began exploring how modern scientists define a physically accurate lighting model. Drawing from various publications, I developed my own understanding and created a unique illumination model scheme. Of course, there’s nothing groundbreaking here, but I find it useful to have my own scheme whenever I revisit this topic at work. I’m fully aware that lighting models in game engines are incomplete for practical reasons. I also understand that implementing specular and diffuse transmission is challenging and not always necessary. However, I’ve always wondered why most game engines ignore retroreflection. It’s a simple component of the physical lighting model, easy to implement, and, most importantly, fully adheres to the law of energy conservation. Retroreflection happens when a su...

Water RND #1

Image
Water surfaces are an essential part of game projects. The approaches to implementing them are constantly evolving, where visual quality and performance are still in conflict. I’d like to share a bit about my experiments and thoughts on this topic. Trochoidal wave The shape of a trochoid is the key to understanding the mechanics of a water surface. A trochoidal wave is a model of a surface water wave where the water particles move in nearly circular or elliptical paths, creating waves that have rounded troughs and sharper crests. It’s a more realistic representation of ocean waves compared to a simple sine wave. In simple terms: The wave shape is smoother and more natural-looking, with sharper peaks and flatter bottoms. Water particles don’t travel far; instead, they move in looping paths — mostly in place. This kind of wave better represents how waves behave on the ocean surface under light to moderate wind conditions. Prebaked spectral waves  My prebaked solution uses spectr...

How to keep track of Translucency and Emission when you setting up lighting

Image
During my time as a Lead VFX Artist, I frequently encountered challenges related to improperly configured lighting setups. Translucent materials would either flare up like a supernova or appear as dark as obsidian, depending on the scene conditions. Similar issues occurred with emissive elements — additive emissive particles would sometimes bloom intensely like a welding arc, while at other times they would disappear entirely. I solved this problem by dividing the emissive into eye adaptation in the master materials of effects . However, the problem with lit translucency remained unsolved until years later, when I took on the role of Technical Art Director and was finally in a position to directly influence lighting workflows. In this article, I’d like to share a simple yet effective technique — one that has long existed but is still rarely applied in production. In Unreal Engine, there's a function that, when you press a hotkey, can display geometry. Its position is determined by ...

Advanced sparks for Unreal Engine

Image
First prototype 2021 There’s hardly a game without sparks. But how far are artists willing to go to make them look good? Obviously, a simple sphere mask on a billboard isn’t exactly what you’d want to see in a modern game. I want to talk about my attempts to solve this issue. I conducted many experiments, which resulted in a pipeline that balances visual quality and performance. Sparks pipeline After testing in gameplay conditions, it became clear that using eight sides for a spark and a few edges for distortion or ricochet effects is justified. Below is a table showing the approved topology for use: Below you can see an illustration of the ricochet algorithm. It turned out that there's no need for a large number of edges. A single additional edge is enough to handle one bounce effectively. Ricochets with two or more bounces were excluded from production. There is a fundamental principle in computer game development (and beyond) that can be roughly formulated as:  A polygon should ...

Rendering pipeline UE5

Image
A lot of people have been trying to figure out the Unreal Engine 5 rendering system over the past few years. I dare say that not everyone who tried has made any significant progress in this matter. The reasons are obvious, it's a huge amount of information. The rendering system is in the process of improvement. Changes in each version are part of the problem. In addition to everything, the renderer has an incredible number of settings. These settings change the order and number of internal processes. For those who haven't given up and are still trying to dig deeper. I've prepared a schema that shows the sequence of the rendering dependency graph execution on the GPU. There is a fundamental structure that is always present. In this particular case, you can see this structure. Deferred rendering always starts with PrePass. At this stage, the vertex shader draws the geometry and calculates the depth of the scene. In case of using nanite geometry, a NaniteVisBuffer appears. I...

How a simple idea can save big – Understanding the Forward Vector and Coordinate System

Image
Forward Vector Have you ever encountered a situation where the muzzle flash appears not in front of the barrel but off to the side? Have you seen sets of similar effects oriented along different axes? Did the team have to reorient the effects? How much time did it take? Have you worked with modular building kits? Have you come across elements with different orientations that make automation difficult or even impossible? How did you solve this issue? Did you add the ability to adjust asset orientation everywhere, or do you do it manually? The challenges of procedural shading. People underestimate the impact of inconsistency. I want to talk about how to eliminate this problem once and for all. You'll be surprised how much time you can save by setting up rules in pre-production. When I first set up the rules for importing models and orienting particle systems, I did some work. To find the right solution for  declare a universal Forward Vector for the project, I ana...

Rational use of textures in creating high-quality effects

Image
In this post I want to show the benefits of my approach to smoke shading. I also want to tell you how to improve the animation of fire and explosions. And most importantly, there will be recommendations on how to maintain an impressive level of performance. These ideas were formulated in 2021. Implemented twice in two different companies where I led this process. Simple Smoke Initially, I set myself the task of not using more than one sampler. But to spend a sampler simply on alpha means not using its full potential. Please pay attention to the animation below: On the left - one channel is used for Alpha and that's it; In the center - one channel for Alpha and two more for the Normal map; On the right - Alpha, two for Normal and the last one for AO. It is obvious that the right side has the most detailed smoke, which will perfectly fit into any environment. And the best thing is that the budget for one sampler is not exceeded. Here the question may rightly arise that two channels f...