Posts

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...

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...

How to Keep a Large Team Aligned and Motivated

Image
When managing a team, you realize that each team member's engagement is crucial. I was confident that the part of the team working in the office was highly motivated. I spent a lot of time at the whiteboard with them, drawing numerous diagrams every day. By receiving instant feedback, we iterated and consistently achieved solid results. Seeing that they enjoyed the process made me even more enthusiastic. Here are some of my hand-drawn whiteboard diagrams: When I needed the team to find the right console variables for their work, I simply printed out 5,000 commands on paper and put them up around the office. Each department had its own marker color. Whenever someone wanted to take a break and stretch, they would walk up to the wall and highlight the console commands or variables that interested them. People spent a lot of time near the printouts—talking on the phone, chatting about work, or just discussing personal matters. But before long, the entire wall was covered in notes, arro...

The cheapest way to transfer vertex animation to a game engine

Image
RND for project Origin Car swallowed by forest Infected weapon The animation is baked into two UV sets. The cheapest way to transfer vertex animation to a game engine. The model size increases by just 4 bytes per vertex. This will work on any platform. There is no need to use full- precision UVs. UV Set1  • Position X • Position Y UV Set2 • Position Z • Weight 1. Half - precision (FP16, 16-bit float) • 1 bit — sign • 5 bit — exponent • 10 bit — mantissa 2. Single (full) - precision (FP32, 32-bit float) • 1 bit — sign • 8 bit — exponent • 23 bit — mantissa

Problem solving with Alpha channel

Image
Creating VFX for video games is a specialized field of CG. This field requires a specific set of functions from DCC software. Unfortunately, there are no ready-made solutions yet, which is why VFX artists are forced to create custom solutions. In this topic, I want to describe the approach to solving problems with mip levels and filtering alpha textures. As you know, for game engine the alpha channel is nothing more than a mask for different maps. When you render transparent textures, most rendering software do not take into account the need to generate mip levels for these images or filter them. All those are essentially downsampling, which in most cases produce the appearance of visual bugs. There are such : - Unexpected outlines, at the edges of images; - Color distortion in gradient alpha areas; - Unexpected changes values in the maps of depth, normals, motion vectors... I understand how the game engine handles the texture and I sugest an effective solution for this...