AVSim/simulation-package
Simulation runtime: the third-party half of the AVSim data generation package This repository holds the third-party runtime of the Simulation data generation package, version 3: the pieces the pipeline needs that were not written by the authors. It contains no code and no data of the authors. It is not usable on its own: the private half of the package, AVSim/simulation, downloads this repository into the same directory at a pinned revision with its fetch_runtime.sh script and… See the full description on the dataset page: https://huggingface.co/datasets/AVSim/simulation-package.
03.7k
1mdl 1.3;
2
3import ::math::*;
4import ::state::*;
5import ::tex::*;
6import ::anno::*;
7using .::OmniUe4FunctionTerrain import *;
8using .::OmniUe4BaseTerrain import *;
9
10export annotation sampler_color();
11export annotation sampler_normal();
12export annotation sampler_grayscale();
13export annotation sampler_alpha();
14export annotation sampler_masks();
15export annotation sampler_distancefield();
16export annotation dither_masked_off();
17export annotation world_space_normal();
18
19export material terrain_base(
20 float WorldSpaceUVMult = 5000.0,
21 float Set1Tile = 2.5,
22 uniform texture_2d Set1SuperNormal = texture_2d("./drivable_surfaces/general/road/road_base/set1supernormal.TGA",::tex::gamma_linear)
23 [[sampler_color()]],
24 float Set2Tile = 4.0,
25 uniform texture_2d Set2SuperNormal = texture_2d("./drivable_surfaces/general/road/road_base/set1supernormal.TGA",::tex::gamma_linear)
26 [[sampler_color()]],
27 float Set1Set2BlendNoiseTile = 1.0,
28 uniform texture_2d Set1Set2BlendNoise = texture_2d("./drivable_surfaces/general/road/road_base/t_noise_d.png",::tex::gamma_srgb)
29 [[sampler_color()]],
30 float NormalConvert = 1.0,
31 float NormalAmount = 0.2,
32 float Puddle_NormalAmount = 0.0,
33 float Puddle_NoiseTile = 0.5,
34 uniform texture_2d PuddleNoise = texture_2d("./drivable_surfaces/general/road/road_base/t_noise01.png",::tex::gamma_srgb)
35 [[sampler_color()]],
36 float Puddle_NoiseBlend = 1.0,
37 float Terrain_Set1Tile = 5.0,
38 uniform texture_2d Terrain_Set1SuperNormal = texture_2d("./surrounding_surfaces/terrain/terrain_base/grassdead_normal.TGA",::tex::gamma_srgb)
39 [[sampler_color()]],
40 float Terrain_Set2Tile = 2.5,
41 uniform texture_2d Terrain_Set2SuperNormal = texture_2d("./surrounding_surfaces/terrain/terrain_base/grass_normal.TGA",::tex::gamma_srgb)
42 [[sampler_color()]],
43 float Terrain_NoiseTile = 4.0,
44 uniform texture_2d TerrainNoise = texture_2d("./surrounding_surfaces/terrain/terrain_base/terrain_blend_noise.TGA",::tex::gamma_srgb)
45 [[sampler_color()]],
46 float Terrain_Edge1ParamA = 2.061228036880493,
47 float Terrain_Edge1ParamB = 0.09909400343895,
48 float Terrain_Edge1ParamC = -0.108556002378464,
49 float Terrain_Edge1Width = 1.0,
50 int VertexColorCoordinateIndex = 1,
51 float Terrain_Set3Tile = 6.309484004974365,
52 uniform texture_2d Terrain_Set3SuperNormal = texture_2d("./surrounding_surfaces/terrain/terrain_base/dark_normal.TGA",::tex::gamma_srgb)
53 [[sampler_color()]],
54 float Terrain_Edge2ParamA = 0.647574007511139,
55 float Terrain_Edge2ParamB = 3.697367906570435,
56 float Terrain_Edge2ParamC = -0.042270001024008,
57 float Terrain_Edge2Width = 1.0,
58 float Terrain_NormalConvert = 1.0,
59 float Terrain_Edge0ParamA = 0.336418986320496,
60 float Terrain_Edge0ParamB = 19.704376220703125,
61 float Terrain_Edge0ParamC = 0.005729999858886,
62 float Terrain_Edge0Width = 1.0,
63 uniform texture_2d Set1SuperAlbedo = texture_2d("./drivable_surfaces/general/road/road_base/set1superalbedo.TGA",::tex::gamma_srgb)
64 [[sampler_color()]],
65 uniform texture_2d Set2SuperAlbedo = texture_2d("./drivable_surfaces/general/road/road_base/set1superalbedo.TGA",::tex::gamma_srgb)
66 [[sampler_color()]],
67 float AlbedoMult = 2.0,
68 float Puddle_AlbedoMult = 1.0,
69 uniform texture_2d Terrain_Set1SuperAlbedo = texture_2d("./surrounding_surfaces/terrain/terrain_base/grassdead_basecolor.TGA",::tex::gamma_srgb)
70 [[sampler_color()]],
71 uniform texture_2d Terrain_Set2SuperAlbedo = texture_2d("./surrounding_surfaces/terrain/terrain_base/grass_basecolor.TGA",::tex::gamma_srgb)
72 [[sampler_color()]],
73 uniform texture_2d Terrain_Set3SuperAlbedo = texture_2d("./surrounding_surfaces/terrain/terrain_base/dark_basecolor.TGA",::tex::gamma_srgb)
74 [[sampler_color()]],
75 uniform texture_2d Terrain_GlobalAlbedo = texture_2d("./surrounding_surfaces/terrain/terrain_base/white.png",::tex::gamma_srgb)
76 [[sampler_color()]],
77 float Terrain_Edge3ParamA = 0.243763998150826,
78 float Terrain_Edge3ParamB = 1.786692976951599,
79 float Terrain_Edge3ParamC = 0.033920001238585,
80 float Terrain_Edge3Width = 0.961905002593994,
81 float SpecularPow_Order1 = 1.0,
82 float SpecularMult_Order2 = 1.0,
83 float Puddle_SpecularPow_Order1 = 2.0,
84 float Puddle_SpecularMult_Order2 = 0.32,
85 float RoughnessPow_Order1 = 1.5,
86 float RoughnessMult_Order2 = 1.0,
87 float RoughnessOffset_Order3 = -0.085716,
88 float Puddle_RoughnessPow_Order1 = 1.0,
89 float Puddle_RoughnessMult_Order2 = 1.0,
90 float Puddle_RoughnessOffset_Order3 = -1.0)
91 =
92 let {
93 float3 WorldPositionOffset_mdl = float3(0.0,0.0,0.0);
94 float2 CustomizedUV0_mdl = float2(state::texture_coordinate(0).x,1.0-state::texture_coordinate(0).y);
95
96 float3 Local0 = ((state::transform_point(state::coordinate_internal,state::coordinate_world,state::position())*state::meters_per_scene_unit()*100.0) / WorldSpaceUVMult);
97 float2 Local1 = (float2(Local0.x,Local0.y) * Set1Tile);
98 float4 Local2 = tex::lookup_float4(Set1SuperNormal,float2(Local1.x,1.0-Local1.y),tex::wrap_repeat,tex::wrap_repeat);
99 float2 Local3 = (float2(Local0.x,Local0.y) * Set2Tile);
100 float4 Local4 = tex::lookup_float4(Set2SuperNormal,float2(Local3.x,1.0-Local3.y),tex::wrap_repeat,tex::wrap_repeat);
101 float2 Local5 = (float2(Local0.x,Local0.y) * Set1Set2BlendNoiseTile);
102 float4 Local6 = tex::lookup_float4(Set1Set2BlendNoise,float2(Local5.x,1.0-Local5.y),tex::wrap_repeat,tex::wrap_repeat);
103 float3 Local7 = math::lerp(float3(Local2.x,Local2.y,Local2.z),float3(Local4.x,Local4.y,Local4.z),Local6.x);
104 float3 Local8 = (Local7 * 2.0);
105 float3 Local9 = (Local8 - 1.0);
106 float3 Local10 = math::lerp(Local7,Local9,NormalConvert);
107 float3 Local11 = math::lerp(float3(0.0,0.0,1.0),Local10,NormalAmount);
108 float3 Local12 = math::lerp(float3(0.0,0.0,1.0),Local10,Puddle_NormalAmount);
109 float2 Local13 = (float2(Local0.x,Local0.y) * Puddle_NoiseTile);
110 float4 Local14 = tex::lookup_float4(PuddleNoise,float2(Local13.x,1.0-Local13.y),tex::wrap_repeat,tex::wrap_repeat);
111 float Local15 = (Local14.x * Puddle_NoiseBlend);
112 float3 Local16 = math::lerp(Local11,Local12,Local15);
113 float2 Local17 = (float2(Local0.x,Local0.y) * Terrain_Set1Tile);
114 float4 Local18 = tex::lookup_float4(Terrain_Set1SuperNormal,float2(Local17.x,1.0-Local17.y),tex::wrap_repeat,tex::wrap_repeat);
115 float2 Local19 = (float2(Local0.x,Local0.y) * Terrain_Set2Tile);
116 float4 Local20 = tex::lookup_float4(Terrain_Set2SuperNormal,float2(Local19.x,1.0-Local19.y),tex::wrap_repeat,tex::wrap_repeat);
117 float2 Local21 = (float2(Local0.x,Local0.y) * Terrain_NoiseTile);
118 float4 Local22 = tex::lookup_float4(TerrainNoise,float2(Local21.x,1.0-Local21.y),tex::wrap_repeat,tex::wrap_repeat);
119 float Local23 = (1.0 - Local22.x);
120 float Local24 = (Local23 * Terrain_Edge1ParamA);
121 float Local25 = (1.0 + Terrain_Edge1ParamB);
122 float Local26 = (Terrain_Edge1ParamA * -1.0);
123 float Local27 = (Local26 + 0.0);
124 float Local28 = math::min(Local25,Local27);
125 float Local29 = math::max(Local25,Local27);
126 float Local30 = (Local25 - Local27);
127 float Local31 = (1.0 - Terrain_Edge1ParamC);
128 float Local32 = (Local30 / Local31);
129 float Local33 = math::min(1.0,Terrain_Edge1ParamC);
130 float Local34 = math::max(1.0,Terrain_Edge1ParamC);
131 float Local35 = (1.0 - Terrain_Edge1Width);
132 float Local36 = (1.0 - Local35);
133 float Local37 = (Local31 / Local36);
134 float Local38 = (::vertex_color_from_coordinate(VertexColorCoordinateIndex).x - Local35);
135 float Local39 = (Local37 * Local38);
136 float Local40 = (Local39 + Terrain_Edge1ParamC);
137 float Local41 = math::min(math::max(Local40,Local33),Local34);
138 float Local42 = math::pow(Local41,1.5);
139 float Local43 = (Local42 - Terrain_Edge1ParamC);
140 float Local44 = (Local32 * Local43);
141 float Local45 = (Local44 + Local27);
142 float Local46 = math::min(math::max(Local45,Local28),Local29);
143 float Local47 = (Local24 + Local46);
144 float Local48 = math::min(math::max(Local47,0.0),1.0);
145 float3 Local49 = math::lerp(float3(Local18.x,Local18.y,Local18.z),float3(Local20.x,Local20.y,Local20.z),Local48);
146 float2 Local50 = (float2(Local0.x,Local0.y) * Terrain_Set3Tile);
147 float4 Local51 = tex::lookup_float4(Terrain_Set3SuperNormal,float2(Local50.x,1.0-Local50.y),tex::wrap_repeat,tex::wrap_repeat);
148 float Local52 = (Local23 * Terrain_Edge2ParamA);
149 float Local53 = (1.0 + Terrain_Edge2ParamB);
150 float Local54 = (Terrain_Edge2ParamA * -1.0);
151 float Local55 = (Local54 + 0.0);
152 float Local56 = math::min(Local53,Local55);
153 float Local57 = math::max(Local53,Local55);
154 float Local58 = (Local53 - Local55);
155 float Local59 = (1.0 - Terrain_Edge2ParamC);
156 float Local60 = (Local58 / Local59);
157 float Local61 = math::min(1.0,Terrain_Edge2ParamC);
158 float Local62 = math::max(1.0,Terrain_Edge2ParamC);
159 float Local63 = (1.0 - Terrain_Edge2Width);
160 float Local64 = (1.0 - Local63);
161 float Local65 = (Local59 / Local64);
162 float Local66 = (::vertex_color_from_coordinate(VertexColorCoordinateIndex).z - Local63);
163 float Local67 = (Local65 * Local66);
164 float Local68 = (Local67 + Terrain_Edge2ParamC);
165 float Local69 = math::min(math::max(Local68,Local61),Local62);
166 float Local70 = math::pow(Local69,1.5);
167 float Local71 = (Local70 - Terrain_Edge2ParamC);
168 float Local72 = (Local60 * Local71);
169 float Local73 = (Local72 + Local55);
170 float Local74 = math::min(math::max(Local73,Local56),Local57);
171 float Local75 = (Local52 + Local74);
172 float Local76 = math::min(math::max(Local75,0.0),1.0);
173 float3 Local77 = math::lerp(Local49,float3(Local51.x,Local51.y,Local51.z),Local76);
174 float3 Local78 = (Local77 * 2.0);
175 float3 Local79 = (Local78 - 1.0);
176 float3 Local80 = math::lerp(Local77,Local79,Terrain_NormalConvert);
177 float Local81 = (Local23 * Terrain_Edge0ParamA);
178 float Local82 = (1.0 + Terrain_Edge0ParamB);
179 float Local83 = (Terrain_Edge0ParamA * -1.0);
180 float Local84 = (Local83 + 0.0);
181 float Local85 = math::min(Local82,Local84);
182 float Local86 = math::max(Local82,Local84);
183 float Local87 = (Local82 - Local84);
184 float Local88 = (1.0 - Terrain_Edge0ParamC);
185 float Local89 = (Local87 / Local88);
186 float Local90 = math::min(1.0,Terrain_Edge0ParamC);
187 float Local91 = math::max(1.0,Terrain_Edge0ParamC);
188 float Local92 = (1.0 - Terrain_Edge0Width);
189 float Local93 = (1.0 - Local92);
190 float Local94 = (Local88 / Local93);
191 float Local95 = (::vertex_color_from_coordinate(VertexColorCoordinateIndex).x - Local92);
192 float Local96 = (Local94 * Local95);
193 float Local97 = (Local96 + Terrain_Edge0ParamC);
194 float Local98 = math::min(math::max(Local97,Local90),Local91);
195 float Local99 = math::pow(Local98,1.5);
196 float Local100 = (Local99 - Terrain_Edge0ParamC);
197 float Local101 = (Local89 * Local100);
198 float Local102 = (Local101 + Local84);
199 float Local103 = math::min(math::max(Local102,Local85),Local86);
200 float Local104 = (Local81 + Local103);
201 float Local105 = math::min(math::max(Local104,0.0),1.0);
202 float3 Local106 = math::lerp(Local16,Local80,Local105);
203
204 float Local106a = Local106.x * Local106.x + Local106.y * Local106.y + Local106.z * Local106.z;
205 float Local106b = math::pow(Local106a, 0.5);
206 float3 Normal_mdl = Local106 / Local106b;
207
208 float4 Local107 = tex::lookup_float4(Set1SuperAlbedo,float2(Local1.x,1.0-Local1.y),tex::wrap_repeat,tex::wrap_repeat);
209 float4 Local108 = tex::lookup_float4(Set2SuperAlbedo,float2(Local3.x,1.0-Local3.y),tex::wrap_repeat,tex::wrap_repeat);
210 float3 Local109 = math::lerp(float3(float2(Local107.x,Local107.y).x,float2(Local107.x,Local107.y).y,Local107.z),float3(float2(Local108.x,Local108.y).x,float2(Local108.x,Local108.y).y,Local108.z),Local6.x);
211 float3 Local110 = (Local109 * AlbedoMult);
212 float3 Local111 = math::min(math::max(Local110,float3(0.0,0.0,0.0)),float3(1.0,1.0,1.0));
213 float3 Local112 = (Local109 * Puddle_AlbedoMult);
214 float3 Local113 = math::min(math::max(Local112,float3(0.0,0.0,0.0)),float3(1.0,1.0,1.0));
215 float3 Local114 = math::lerp(Local111,Local113,Local15);
216 float4 Local115 = tex::lookup_float4(Terrain_Set1SuperAlbedo,float2(Local17.x,1.0-Local17.y),tex::wrap_repeat,tex::wrap_repeat);
217 float4 Local116 = tex::lookup_float4(Terrain_Set2SuperAlbedo,float2(Local19.x,1.0-Local19.y),tex::wrap_repeat,tex::wrap_repeat);
218 float3 Local117 = math::lerp(float3(Local115.x,Local115.y,Local115.z),float3(Local116.x,Local116.y,Local116.z),Local48);
219 float4 Local118 = tex::lookup_float4(Terrain_Set3SuperAlbedo,float2(Local50.x,1.0-Local50.y),tex::wrap_repeat,tex::wrap_repeat);
220 float3 Local119 = math::lerp(Local117,float3(Local118.x,Local118.y,Local118.z),Local76);
221 float3 Local120 = math::lerp(Local114,Local119,Local105);
222 float4 Local121 = tex::lookup_float4(Terrain_GlobalAlbedo,float2(CustomizedUV0_mdl.x,1.0-CustomizedUV0_mdl.y),tex::wrap_repeat,tex::wrap_repeat);
223 float Local122 = (Local23 * Terrain_Edge3ParamA);
224 float Local123 = (1.0 + Terrain_Edge3ParamB);
225 float Local124 = (Terrain_Edge3ParamA * -1.0);
226 float Local125 = (Local124 + 0.0);
227 float Local126 = math::min(Local123,Local125);
228 float Local127 = math::max(Local123,Local125);
229 float Local128 = (Local123 - Local125);
230 float Local129 = (1.0 - Terrain_Edge3ParamC);
231 float Local130 = (Local128 / Local129);
232 float Local131 = math::min(1.0,Terrain_Edge3ParamC);
233 float Local132 = math::max(1.0,Terrain_Edge3ParamC);
234 float Local133 = (1.0 - Terrain_Edge3Width);
235 float Local134 = (1.0 - Local133);
236 float Local135 = (Local129 / Local134);
237 float Local136 = (::vertex_color_from_coordinate(VertexColorCoordinateIndex).y - Local133);
238 float Local137 = (Local135 * Local136);
239 float Local138 = (Local137 + Terrain_Edge3ParamC);
240 float Local139 = math::min(math::max(Local138,Local131),Local132);
241 float Local140 = math::pow(Local139,1.5);
242 float Local141 = (Local140 - Terrain_Edge3ParamC);
243 float Local142 = (Local130 * Local141);
244 float Local143 = (Local142 + Local125);
245 float Local144 = math::min(math::max(Local143,Local126),Local127);
246 float Local145 = (Local122 + Local144);
247 float Local146 = math::min(math::max(Local145,0.0),1.0);
248 float3 Local147 = math::lerp(Local120,float3(Local121.x,Local121.y,Local121.z),Local146);
249 float Local148 = math::lerp(0.0,0.0,Local146);
250 float Local149 = math::lerp(Local107.w,Local108.w,Local6.x);
251 float Local150 = math::pow(Local149,SpecularPow_Order1);
252 float Local151 = (Local150 * SpecularMult_Order2);
253 float Local152 = math::pow(Local149,Puddle_SpecularPow_Order1);
254 float Local153 = (Local152 * Puddle_SpecularMult_Order2);
255 float Local154 = math::lerp(Local151,Local153,Local15);
256 float Local155 = math::lerp(Local115.w,Local116.w,Local48);
257 float Local156 = math::lerp(Local155,Local118.w,Local76);
258 float Local157 = math::lerp(Local154,Local156,Local105);
259 float Local158 = math::lerp(Local157,0.0,Local146);
260 float Local159 = math::lerp(Local2.w,Local4.w,Local6.x);
261 float Local160 = math::pow(Local159,RoughnessPow_Order1);
262 float Local161 = (Local160 * RoughnessMult_Order2);
263 float Local162 = (Local161 + RoughnessOffset_Order3);
264 float Local163 = math::pow(Local159,Puddle_RoughnessPow_Order1);
265 float Local164 = (Local163 * Puddle_RoughnessMult_Order2);
266 float Local165 = (Local164 + Puddle_RoughnessOffset_Order3);
267 float Local166 = math::lerp(Local162,Local165,Local15);
268 float Local167 = math::lerp(Local18.w,Local20.w,Local48);
269 float Local168 = math::lerp(Local167,Local51.w,Local76);
270 float Local169 = math::lerp(Local166,Local168,Local105);
271 float Local170 = math::lerp(Local169,1.0,Local146);
272
273 float3 EmissiveColor_mdl = float3(0.0,0.0,0.0);
274 float OpacityMask_mdl = 1.0;
275 float3 BaseColor_mdl = Local147;
276 float Metallic_mdl = Local148;
277 float Specular_mdl = Local158;
278 float Roughness_mdl = Local170;
279
280 } in
281 ::OmniUe4Base(
282 base_color: BaseColor_mdl,
283 metallic: Metallic_mdl,
284 roughness: Roughness_mdl,
285 specular: Specular_mdl,
286 normal: Normal_mdl,
287 opacity: OpacityMask_mdl,
288 emissive_color: EmissiveColor_mdl,
289 displacement: WorldPositionOffset_mdl,
290 two_sided: false);
291 