You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Real time rendering performance is often limited by 3D assets as much as it's limited by code. Good low poly assets inevitably rely on baking, the process of transferring details from a high poly mesh with a complex material to a low poly one with a much simpler material. Unfortunately however there seems to be a lack of info regarding baking around, especially in Blender things can sometimes be a bit intuitive regarding baking. In the process of working on my game, A Short Odyssey, I came up with a workflow that works quite well for me, so I will share it with you today.
10
+
Real time rendering performance is often limited by 3D assets as much as it's limited by code. Good low poly assets inevitably rely on baking, the process of transferring details from a high poly mesh with a complex material to a low poly one with a much simpler material. Unfortunately however, there seems to be a lack of info regarding baking around, especially in Blender things can sometimes be a bit unintuitive regarding baking. In the process of working on my game, A Short Odyssey (ASO), I came up with a workflow that works quite well for me, so I will share it with you today.
11
11
12
-
For this tutorial we are going to use this wooden bowl model from the fantastic website [Polyhaven](https://polyhaven.com/a/wooden_bowl_02)
12
+
For this tutorial we are going to use this wooden bowl model from the fantastic website [Polyhaven](https://polyhaven.com/a/wooden_bowl_02).
13
13
14
14

15
15
16
16
<!-- truncate -->
17
17
18
-
As with all of the free CC0 models on Polyhaven this mesh has a fairly high number of small triangles, 4,666 to be exact, while that may not seem like a lot think about how big it is likely to be in a realtime scene. Most of the time the entire bowl might only be a few pixels tall! Especially given that small triangles are much more expensive than large triangles (due to quad occupancy) this is probably something we should deal with.
18
+
As with all of the free CC0 models on Polyhaven, this mesh has a fairly high number of small triangles. 4,666 to be exact, while that may not seem like a lot think about how big it is likely to be in a realtime scene. Most of the time the entire bowl might only be a few pixels tall! Especially given that small triangles are much more expensive than large triangles (due to quad occupancy). this is probably something we should deal with.
19
19
20
20

21
21
@@ -27,7 +27,7 @@ Open up your high poly model in Blender, I am using Blender 4.4, other versions
27
27
28
28

29
29
30
-
You then will need a low poly version of the model. How create a low poly model is outside the scope of this tutorial, but it *must* be UV-unwrapped before proceeding and none of the polygons should be overlapping on the UV map.
30
+
You then will need a low poly version of the model. How to create a low poly model is outside the scope of this tutorial, but it *must* be UV-unwrapped before proceeding and none of the polygons should be overlapping on the UV map.
31
31
32
32

33
33
@@ -39,7 +39,7 @@ The first thing you need to do is make sure the high and low-poly models are dir
39
39
40
40

41
41
42
-
If it is not you can apply the scale with Ctrl+A -> Apply -> Scale, while the low poly object is selected in object mode.
42
+
If it is not, you can apply the scale with <kbd>Ctrl+A</kbd> -> Apply -> Scale, while the low poly object is selected in object mode.
43
43
44
44

45
45
@@ -55,13 +55,13 @@ To create a linked duplicate, simply select your low-poly object and hit Alt+D,
55
55
56
56

57
57
58
-
I'm going to name the new object "Low Poly" and the first one "Bake Target" (The names don't matter but it's nice to be organized)
58
+
I'm going to name the new object `Low Poly` and the first one `Bake Target` (The names don't matter but it's nice to be organized).
59
59
60
60

61
61
62
-
This next part is very important, you must set the Bake Target to source it's materials from "Object" instead of "Data" this way the two linked objects can have different materials. This is done as shown above in the material tab for the Bake Target Object
62
+
This next part is very important, you must set the `Bake Target` to source it's materials from "Object" instead of "Data". This way the two linked objects can have different materials. This is done as shown above in the material tab for the `Bake Target` Object
63
63
64
-
You can then create a material for it which I will also call "Bake Target", I will also create a new material for the "Low Poly" object and call it "Low Poly"
64
+
You can then create a material for it which I will also call `Bake Target`, I will also create a new material for the `Low Poly` object and call it `Low Poly`.
65
65
66
66
# Setting up Materials
67
67
@@ -71,19 +71,19 @@ The rest of this process will be done in the shading tab so we can switch there.
71
71
72
72

73
73
74
-
With the bake target selected we will add 3 texture nodes to it's material. Because I'm doing PBR these will be Albedo, Normal & Roughness (I will get into metalness later in this tutorial). These texture nodes should have their colour space set to "sRGB" for the Albedo and "Non-Color" for the others. You should NOT connect these nodes to anything.
74
+
With the bake target selected we will add 3 texture nodes to it's material. Because I'm using a PBR workflow, these will be Albedo, Normal & Roughness (I will get into metalness later in this tutorial). These texture nodes should have their colour space set to "sRGB" for the Albedo and "Non-Color" for the others. You should NOT connect these nodes to anything.
75
75
76
76

77
77
78
-
You can then copy & paste these nodes into the material for the "Low Poly" object. Then connect the nodes like shown here.
78
+
You can then copy & paste these nodes into the material for the `Low Poly` object. Then connect the nodes like shown here.
79
79
80
80

81
81
82
82
If you use DirectX style normal maps (Like I do in ASO), you will need to add an "RGB Curves" node with the green channel flipped in order to invert the green channel of the normal map.
83
83
84
84

85
85
86
-
Your low poly will look weird and shiny, that is because our baked textures are all black at the moment, that is OK, it will look correct after we are done baking.
86
+
Your low poly will look weird and shiny, that is because our baked textures are all black at the moment, that is OK. It will look correct after we are done baking.
87
87
88
88
Now that everything is set up, we can start looking at the actual baking UI.
89
89
@@ -103,13 +103,13 @@ Expanding the bake controls will give you access to several new options.
103
103
104
104

105
105
106
-
We will start by baking the normal map. To do so we must first select "Normal" from the Bake Type combo box. You will also want to check "Selected to Active". For users of DirectX style normal maps like myself you will also need to set the G channel to "-Y". If you are using OpenGL style normal maps you can leave it as is.
106
+
We will start by baking the normal map. To do so we must first select "Normal" from the Bake Type combo box. You will also want to check "Selected to Active". For users of DirectX style normal maps, like myself, you will also need to set the G channel to "-Y". If you are using OpenGL style normal maps you can leave it as is.
107
107
108
108
# Performing the Bake
109
109
110
110

111
111
112
-
Ok its finally bake time, select your High Poly asset then press Ctrl and select your Bake Target this sets the High poly as selected and your Bake Target as Active. If everything is selected correctly your outliner should look like the image above. With a dark orange highlight on the high poly object and bright orange for the Bake Target.
112
+
Ok its finally bake time, select your High Poly asset then press Ctrl and select your `Bake Target` this sets the High poly as selected and your `Bake Target` as Active. If everything is selected correctly your outliner should look like the image above. With a dark orange highlight on the high poly object and bright orange for the `Bake Target`.
113
113
114
114

115
115
@@ -125,7 +125,7 @@ After some amount of processing time, you should see a preview of the normal map
125
125
126
126

127
127
128
-
As you can see looking at our "Low Poly" object something is very off.
128
+
As you can see looking at our `Low Poly` object something is very off.
129
129
130
130

131
131
@@ -149,7 +149,7 @@ If our values are set properly we get a nice normal map without any artifacts.
149
149
150
150

151
151
152
-
We can also now look at our "Low Poly" object and see that it looks nice and bumpy. But there is one tiny problem, It's far too shiny! This is because its roughness map is entirely black or 0.0, this corresponds to a mirror like shine. So of course our next step should be to bake a roughness map
152
+
We can also now look at our `Low Poly` object and see that it looks nice and bumpy. But there is one tiny problem, It's far too shiny! This is because its roughness map is entirely black or 0.0, this corresponds to a mirror like shine. So of course our next step should be to bake a roughness map.
153
153
154
154
# Baking a Roughness Map
155
155
@@ -163,7 +163,7 @@ Select "Roughness" for Bake Type and hit Bake again.
163
163
164
164

165
165
166
-
After waiting for the bake to complete we now have a roughness map and the shininess of our bowl now looks correct. Last but certainly not least we need to bake albedo, this is the actual surface colour of our object.
166
+
After waiting for the bake to complete we now have a roughness map and the shininess of our bowl looks correct. Last but certainly not least we need to bake albedo. This is the actual surface colour of our object.
167
167
168
168
# Baking an Albedo Map
169
169
@@ -177,7 +177,7 @@ We set the Bake Type to "Diffuse" this time, but there is one more thing before
177
177
178
178

179
179
180
-
In the below the bake button under "Influence" you must uncheck "Direct" and "Indirect", otherwise blender will bake the lighting into your albedo texture. Now we can hit Bake
180
+
In the below the bake button under "Influence" you must uncheck "Direct" and "Indirect", otherwise blender will bake the lighting into your albedo texture. Now we can hit Bake.
181
181
182
182

183
183
@@ -203,11 +203,11 @@ There is however one tiny consideration for metallic materials. For some reason
203
203
204
204

205
205
206
-
Lets use this hatchet as an example. You need to take the metallic parameter for the high poly mesh's material and hook it up to the *Emission Color* output
206
+
Lets use this hatchet as an example. You need to take the metallic parameter for the high poly mesh's material and hook it up to the *Emission Color* output.
207
207
208
208

209
209
210
-
Because ASO packs roughness and metal together I'm gonna send both through the Emission color using a "Combine Color" node (Note ASO uses R = Roughness, G = Metal, this is different from glTF). All you do now is locate the correct texture in your Bake Target and instead of baking Metal and Roughness you bake using "Emission" as the bake type instead.
210
+
Because ASO packs roughness and metal together I'm gonna send both through the Emission color using a "Combine Color" node (Note ASO uses R = Roughness, G = Metal, this is different from glTF). All you do now is locate the correct texture in your `Bake Target` material and instead of baking Metal and Roughness you bake using "Emission" as the bake type instead.
0 commit comments