1 /**
2 Default 3D rendering material.
3 
4 Copyright:
5 Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.  
6 Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)  
7 Copyright (c) 2017-2018 Godot-D contributors  
8 
9 License: $(LINK2 https://opensource.org/licenses/MIT, MIT License)
10 
11 
12 */
13 module godot.spatialmaterial;
14 import std.meta : AliasSeq, staticIndexOf;
15 import std.traits : Unqual;
16 import godot.d.meta;
17 import godot.core;
18 import godot.c;
19 import godot.d.bind;
20 import godot.d.reference;
21 import godot.object;
22 import godot.classdb;
23 import godot.material;
24 import godot.texture;
25 import godot.resource;
26 import godot.reference;
27 /**
28 Default 3D rendering material.
29 
30 This provides a default material with a wide variety of rendering features and properties without the need to write shader code. See the tutorial below for details.
31 */
32 @GodotBaseClass struct SpatialMaterial
33 {
34 	enum string _GODOT_internal_name = "SpatialMaterial";
35 public:
36 @nogc nothrow:
37 	union { godot_object _godot_object; Material _GODOT_base; }
38 	alias _GODOT_base this;
39 	alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses);
40 	package(godot) __gshared bool _classBindingInitialized = false;
41 	package(godot) static struct _classBinding
42 	{
43 		__gshared:
44 		@GodotName("set_albedo") GodotMethod!(void, Color) setAlbedo;
45 		@GodotName("get_albedo") GodotMethod!(Color) getAlbedo;
46 		@GodotName("set_specular") GodotMethod!(void, double) setSpecular;
47 		@GodotName("get_specular") GodotMethod!(double) getSpecular;
48 		@GodotName("set_metallic") GodotMethod!(void, double) setMetallic;
49 		@GodotName("get_metallic") GodotMethod!(double) getMetallic;
50 		@GodotName("set_roughness") GodotMethod!(void, double) setRoughness;
51 		@GodotName("get_roughness") GodotMethod!(double) getRoughness;
52 		@GodotName("set_emission") GodotMethod!(void, Color) setEmission;
53 		@GodotName("get_emission") GodotMethod!(Color) getEmission;
54 		@GodotName("set_emission_energy") GodotMethod!(void, double) setEmissionEnergy;
55 		@GodotName("get_emission_energy") GodotMethod!(double) getEmissionEnergy;
56 		@GodotName("set_normal_scale") GodotMethod!(void, double) setNormalScale;
57 		@GodotName("get_normal_scale") GodotMethod!(double) getNormalScale;
58 		@GodotName("set_rim") GodotMethod!(void, double) setRim;
59 		@GodotName("get_rim") GodotMethod!(double) getRim;
60 		@GodotName("set_rim_tint") GodotMethod!(void, double) setRimTint;
61 		@GodotName("get_rim_tint") GodotMethod!(double) getRimTint;
62 		@GodotName("set_clearcoat") GodotMethod!(void, double) setClearcoat;
63 		@GodotName("get_clearcoat") GodotMethod!(double) getClearcoat;
64 		@GodotName("set_clearcoat_gloss") GodotMethod!(void, double) setClearcoatGloss;
65 		@GodotName("get_clearcoat_gloss") GodotMethod!(double) getClearcoatGloss;
66 		@GodotName("set_anisotropy") GodotMethod!(void, double) setAnisotropy;
67 		@GodotName("get_anisotropy") GodotMethod!(double) getAnisotropy;
68 		@GodotName("set_depth_scale") GodotMethod!(void, double) setDepthScale;
69 		@GodotName("get_depth_scale") GodotMethod!(double) getDepthScale;
70 		@GodotName("set_subsurface_scattering_strength") GodotMethod!(void, double) setSubsurfaceScatteringStrength;
71 		@GodotName("get_subsurface_scattering_strength") GodotMethod!(double) getSubsurfaceScatteringStrength;
72 		@GodotName("set_transmission") GodotMethod!(void, Color) setTransmission;
73 		@GodotName("get_transmission") GodotMethod!(Color) getTransmission;
74 		@GodotName("set_refraction") GodotMethod!(void, double) setRefraction;
75 		@GodotName("get_refraction") GodotMethod!(double) getRefraction;
76 		@GodotName("set_line_width") GodotMethod!(void, double) setLineWidth;
77 		@GodotName("get_line_width") GodotMethod!(double) getLineWidth;
78 		@GodotName("set_point_size") GodotMethod!(void, double) setPointSize;
79 		@GodotName("get_point_size") GodotMethod!(double) getPointSize;
80 		@GodotName("set_detail_uv") GodotMethod!(void, long) setDetailUv;
81 		@GodotName("get_detail_uv") GodotMethod!(SpatialMaterial.DetailUV) getDetailUv;
82 		@GodotName("set_blend_mode") GodotMethod!(void, long) setBlendMode;
83 		@GodotName("get_blend_mode") GodotMethod!(SpatialMaterial.BlendMode) getBlendMode;
84 		@GodotName("set_depth_draw_mode") GodotMethod!(void, long) setDepthDrawMode;
85 		@GodotName("get_depth_draw_mode") GodotMethod!(SpatialMaterial.DepthDrawMode) getDepthDrawMode;
86 		@GodotName("set_cull_mode") GodotMethod!(void, long) setCullMode;
87 		@GodotName("get_cull_mode") GodotMethod!(SpatialMaterial.CullMode) getCullMode;
88 		@GodotName("set_diffuse_mode") GodotMethod!(void, long) setDiffuseMode;
89 		@GodotName("get_diffuse_mode") GodotMethod!(SpatialMaterial.DiffuseMode) getDiffuseMode;
90 		@GodotName("set_specular_mode") GodotMethod!(void, long) setSpecularMode;
91 		@GodotName("get_specular_mode") GodotMethod!(SpatialMaterial.SpecularMode) getSpecularMode;
92 		@GodotName("set_flag") GodotMethod!(void, long, bool) setFlag;
93 		@GodotName("get_flag") GodotMethod!(bool, long) getFlag;
94 		@GodotName("set_feature") GodotMethod!(void, long, bool) setFeature;
95 		@GodotName("get_feature") GodotMethod!(bool, long) getFeature;
96 		@GodotName("set_texture") GodotMethod!(void, long, Texture) setTexture;
97 		@GodotName("get_texture") GodotMethod!(Texture, long) getTexture;
98 		@GodotName("set_detail_blend_mode") GodotMethod!(void, long) setDetailBlendMode;
99 		@GodotName("get_detail_blend_mode") GodotMethod!(SpatialMaterial.BlendMode) getDetailBlendMode;
100 		@GodotName("set_uv1_scale") GodotMethod!(void, Vector3) setUv1Scale;
101 		@GodotName("get_uv1_scale") GodotMethod!(Vector3) getUv1Scale;
102 		@GodotName("set_uv1_offset") GodotMethod!(void, Vector3) setUv1Offset;
103 		@GodotName("get_uv1_offset") GodotMethod!(Vector3) getUv1Offset;
104 		@GodotName("set_uv1_triplanar_blend_sharpness") GodotMethod!(void, double) setUv1TriplanarBlendSharpness;
105 		@GodotName("get_uv1_triplanar_blend_sharpness") GodotMethod!(double) getUv1TriplanarBlendSharpness;
106 		@GodotName("set_uv2_scale") GodotMethod!(void, Vector3) setUv2Scale;
107 		@GodotName("get_uv2_scale") GodotMethod!(Vector3) getUv2Scale;
108 		@GodotName("set_uv2_offset") GodotMethod!(void, Vector3) setUv2Offset;
109 		@GodotName("get_uv2_offset") GodotMethod!(Vector3) getUv2Offset;
110 		@GodotName("set_uv2_triplanar_blend_sharpness") GodotMethod!(void, double) setUv2TriplanarBlendSharpness;
111 		@GodotName("get_uv2_triplanar_blend_sharpness") GodotMethod!(double) getUv2TriplanarBlendSharpness;
112 		@GodotName("set_billboard_mode") GodotMethod!(void, long) setBillboardMode;
113 		@GodotName("get_billboard_mode") GodotMethod!(SpatialMaterial.BillboardMode) getBillboardMode;
114 		@GodotName("set_particles_anim_h_frames") GodotMethod!(void, long) setParticlesAnimHFrames;
115 		@GodotName("get_particles_anim_h_frames") GodotMethod!(long) getParticlesAnimHFrames;
116 		@GodotName("set_particles_anim_v_frames") GodotMethod!(void, long) setParticlesAnimVFrames;
117 		@GodotName("get_particles_anim_v_frames") GodotMethod!(long) getParticlesAnimVFrames;
118 		@GodotName("set_particles_anim_loop") GodotMethod!(void, long) setParticlesAnimLoop;
119 		@GodotName("get_particles_anim_loop") GodotMethod!(long) getParticlesAnimLoop;
120 		@GodotName("set_depth_deep_parallax") GodotMethod!(void, bool) setDepthDeepParallax;
121 		@GodotName("is_depth_deep_parallax_enabled") GodotMethod!(bool) isDepthDeepParallaxEnabled;
122 		@GodotName("set_depth_deep_parallax_min_layers") GodotMethod!(void, long) setDepthDeepParallaxMinLayers;
123 		@GodotName("get_depth_deep_parallax_min_layers") GodotMethod!(long) getDepthDeepParallaxMinLayers;
124 		@GodotName("set_depth_deep_parallax_max_layers") GodotMethod!(void, long) setDepthDeepParallaxMaxLayers;
125 		@GodotName("get_depth_deep_parallax_max_layers") GodotMethod!(long) getDepthDeepParallaxMaxLayers;
126 		@GodotName("set_grow") GodotMethod!(void, double) setGrow;
127 		@GodotName("get_grow") GodotMethod!(double) getGrow;
128 		@GodotName("set_emission_operator") GodotMethod!(void, long) setEmissionOperator;
129 		@GodotName("get_emission_operator") GodotMethod!(SpatialMaterial.EmissionOperator) getEmissionOperator;
130 		@GodotName("set_ao_light_affect") GodotMethod!(void, double) setAoLightAffect;
131 		@GodotName("get_ao_light_affect") GodotMethod!(double) getAoLightAffect;
132 		@GodotName("set_alpha_scissor_threshold") GodotMethod!(void, double) setAlphaScissorThreshold;
133 		@GodotName("get_alpha_scissor_threshold") GodotMethod!(double) getAlphaScissorThreshold;
134 		@GodotName("set_grow_enabled") GodotMethod!(void, bool) setGrowEnabled;
135 		@GodotName("is_grow_enabled") GodotMethod!(bool) isGrowEnabled;
136 		@GodotName("set_metallic_texture_channel") GodotMethod!(void, long) setMetallicTextureChannel;
137 		@GodotName("get_metallic_texture_channel") GodotMethod!(SpatialMaterial.TextureChannel) getMetallicTextureChannel;
138 		@GodotName("set_roughness_texture_channel") GodotMethod!(void, long) setRoughnessTextureChannel;
139 		@GodotName("get_roughness_texture_channel") GodotMethod!(SpatialMaterial.TextureChannel) getRoughnessTextureChannel;
140 		@GodotName("set_ao_texture_channel") GodotMethod!(void, long) setAoTextureChannel;
141 		@GodotName("get_ao_texture_channel") GodotMethod!(SpatialMaterial.TextureChannel) getAoTextureChannel;
142 		@GodotName("set_refraction_texture_channel") GodotMethod!(void, long) setRefractionTextureChannel;
143 		@GodotName("get_refraction_texture_channel") GodotMethod!(SpatialMaterial.TextureChannel) getRefractionTextureChannel;
144 		@GodotName("set_proximity_fade") GodotMethod!(void, bool) setProximityFade;
145 		@GodotName("is_proximity_fade_enabled") GodotMethod!(bool) isProximityFadeEnabled;
146 		@GodotName("set_proximity_fade_distance") GodotMethod!(void, double) setProximityFadeDistance;
147 		@GodotName("get_proximity_fade_distance") GodotMethod!(double) getProximityFadeDistance;
148 		@GodotName("set_distance_fade") GodotMethod!(void, long) setDistanceFade;
149 		@GodotName("get_distance_fade") GodotMethod!(SpatialMaterial.DistanceFadeMode) getDistanceFade;
150 		@GodotName("set_distance_fade_max_distance") GodotMethod!(void, double) setDistanceFadeMaxDistance;
151 		@GodotName("get_distance_fade_max_distance") GodotMethod!(double) getDistanceFadeMaxDistance;
152 		@GodotName("set_distance_fade_min_distance") GodotMethod!(void, double) setDistanceFadeMinDistance;
153 		@GodotName("get_distance_fade_min_distance") GodotMethod!(double) getDistanceFadeMinDistance;
154 	}
155 	bool opEquals(in SpatialMaterial other) const { return _godot_object.ptr is other._godot_object.ptr; }
156 	SpatialMaterial opAssign(T : typeof(null))(T n) { _godot_object.ptr = null; }
157 	bool opEquals(typeof(null) n) const { return _godot_object.ptr is null; }
158 	mixin baseCasts;
159 	static SpatialMaterial _new()
160 	{
161 		static godot_class_constructor constructor;
162 		if(constructor is null) constructor = _godot_api.godot_get_class_constructor("SpatialMaterial");
163 		if(constructor is null) return typeof(this).init;
164 		return cast(SpatialMaterial)(constructor());
165 	}
166 	@disable new(size_t s);
167 	/// 
168 	enum EmissionOperator : int
169 	{
170 		/**
171 		
172 		*/
173 		emissionOpAdd = 0,
174 		/**
175 		
176 		*/
177 		emissionOpMultiply = 1,
178 	}
179 	/// 
180 	enum DiffuseMode : int
181 	{
182 		/**
183 		Default diffuse scattering algorithm.
184 		*/
185 		diffuseBurley = 0,
186 		/**
187 		Diffuse scattering ignores roughness.
188 		*/
189 		diffuseLambert = 1,
190 		/**
191 		Extends Lambert to cover more than 90 degrees when roughness increases.
192 		*/
193 		diffuseLambertWrap = 2,
194 		/**
195 		Attempts to use roughness to emulate microsurfacing.
196 		*/
197 		diffuseOrenNayar = 3,
198 		/**
199 		Uses a hard cut for lighting, with smoothing affected by roughness.
200 		*/
201 		diffuseToon = 4,
202 	}
203 	/// 
204 	enum SpecularMode : int
205 	{
206 		/**
207 		Default specular blob.
208 		*/
209 		specularSchlickGgx = 0,
210 		/**
211 		Older specular algorithm, included for compatibility.
212 		*/
213 		specularBlinn = 1,
214 		/**
215 		Older specular algorithm, included for compatibility.
216 		*/
217 		specularPhong = 2,
218 		/**
219 		Toon blob which changes size based on roughness.
220 		*/
221 		specularToon = 3,
222 		/**
223 		No specular blob.
224 		*/
225 		specularDisabled = 4,
226 	}
227 	/// 
228 	enum Feature : int
229 	{
230 		/**
231 		
232 		*/
233 		featureTransparent = 0,
234 		/**
235 		
236 		*/
237 		featureEmission = 1,
238 		/**
239 		
240 		*/
241 		featureNormalMapping = 2,
242 		/**
243 		
244 		*/
245 		featureRim = 3,
246 		/**
247 		
248 		*/
249 		featureClearcoat = 4,
250 		/**
251 		
252 		*/
253 		featureAnisotropy = 5,
254 		/**
255 		
256 		*/
257 		featureAmbientOcclusion = 6,
258 		/**
259 		
260 		*/
261 		featureDepthMapping = 7,
262 		/**
263 		
264 		*/
265 		featureSubsuraceScattering = 8,
266 		/**
267 		
268 		*/
269 		featureTransmission = 9,
270 		/**
271 		
272 		*/
273 		featureRefraction = 10,
274 		/**
275 		
276 		*/
277 		featureDetail = 11,
278 		/**
279 		
280 		*/
281 		featureMax = 12,
282 	}
283 	/// 
284 	enum Flags : int
285 	{
286 		/**
287 		
288 		*/
289 		flagUnshaded = 0,
290 		/**
291 		
292 		*/
293 		flagUseVertexLighting = 1,
294 		/**
295 		
296 		*/
297 		flagDisableDepthTest = 2,
298 		/**
299 		
300 		*/
301 		flagAlbedoFromVertexColor = 3,
302 		/**
303 		
304 		*/
305 		flagSrgbVertexColor = 4,
306 		/**
307 		
308 		*/
309 		flagUsePointSize = 5,
310 		/**
311 		
312 		*/
313 		flagFixedSize = 6,
314 		/**
315 		
316 		*/
317 		flagBillboardKeepScale = 7,
318 		/**
319 		
320 		*/
321 		flagUv1UseTriplanar = 8,
322 		/**
323 		
324 		*/
325 		flagUv2UseTriplanar = 9,
326 		/**
327 		
328 		*/
329 		flagTriplanarUseWorld = 10,
330 		/**
331 		
332 		*/
333 		flagAoOnUv2 = 11,
334 		/**
335 		
336 		*/
337 		flagEmissionOnUv2 = 12,
338 		/**
339 		
340 		*/
341 		flagUseAlphaScissor = 13,
342 		/**
343 		
344 		*/
345 		flagAlbedoTextureForceSrgb = 14,
346 		/**
347 		
348 		*/
349 		flagDontReceiveShadows = 15,
350 		/**
351 		
352 		*/
353 		flagEnsureCorrectNormals = 16,
354 		/**
355 		
356 		*/
357 		flagDisableAmbientLight = 17,
358 		/**
359 		
360 		*/
361 		flagMax = 18,
362 	}
363 	/// 
364 	enum CullMode : int
365 	{
366 		/**
367 		Default cull mode. The back of the object is culled when not visible.
368 		*/
369 		cullBack = 0,
370 		/**
371 		The front of the object is culled when not visible.
372 		*/
373 		cullFront = 1,
374 		/**
375 		No culling is performed.
376 		*/
377 		cullDisabled = 2,
378 	}
379 	/// 
380 	enum DetailUV : int
381 	{
382 		/**
383 		
384 		*/
385 		detailUv1 = 0,
386 		/**
387 		
388 		*/
389 		detailUv2 = 1,
390 	}
391 	/// 
392 	enum DistanceFadeMode : int
393 	{
394 		/**
395 		
396 		*/
397 		distanceFadeDisabled = 0,
398 		/**
399 		
400 		*/
401 		distanceFadePixelAlpha = 1,
402 		/**
403 		
404 		*/
405 		distanceFadePixelDither = 2,
406 		/**
407 		
408 		*/
409 		distanceFadeObjectDither = 3,
410 	}
411 	/// 
412 	enum BillboardMode : int
413 	{
414 		/**
415 		Default value.
416 		*/
417 		billboardDisabled = 0,
418 		/**
419 		The object's z-axis will always face the camera.
420 		*/
421 		billboardEnabled = 1,
422 		/**
423 		The object's x-axis will always face the camera.
424 		*/
425 		billboardFixedY = 2,
426 		/**
427 		Used for particle systems. Enables particle animation options.
428 		*/
429 		billboardParticles = 3,
430 	}
431 	/// 
432 	enum DepthDrawMode : int
433 	{
434 		/**
435 		Default depth draw mode. Depth is drawn only for opaque objects.
436 		*/
437 		depthDrawOpaqueOnly = 0,
438 		/**
439 		Depth draw is calculated for both opaque and transparent objects.
440 		*/
441 		depthDrawAlways = 1,
442 		/**
443 		No depth draw.
444 		*/
445 		depthDrawDisabled = 2,
446 		/**
447 		For transparent objects, an opaque pass is made first with the opaque parts, then transparency is drawn.
448 		*/
449 		depthDrawAlphaOpaquePrepass = 3,
450 	}
451 	/// 
452 	enum TextureChannel : int
453 	{
454 		/**
455 		
456 		*/
457 		textureChannelRed = 0,
458 		/**
459 		
460 		*/
461 		textureChannelGreen = 1,
462 		/**
463 		
464 		*/
465 		textureChannelBlue = 2,
466 		/**
467 		
468 		*/
469 		textureChannelAlpha = 3,
470 		/**
471 		
472 		*/
473 		textureChannelGrayscale = 4,
474 	}
475 	/// 
476 	enum BlendMode : int
477 	{
478 		/**
479 		Default blend mode.
480 		*/
481 		blendModeMix = 0,
482 		/**
483 		
484 		*/
485 		blendModeAdd = 1,
486 		/**
487 		
488 		*/
489 		blendModeSub = 2,
490 		/**
491 		
492 		*/
493 		blendModeMul = 3,
494 	}
495 	/// 
496 	enum TextureParam : int
497 	{
498 		/**
499 		
500 		*/
501 		textureAlbedo = 0,
502 		/**
503 		
504 		*/
505 		textureMetallic = 1,
506 		/**
507 		
508 		*/
509 		textureRoughness = 2,
510 		/**
511 		
512 		*/
513 		textureEmission = 3,
514 		/**
515 		
516 		*/
517 		textureNormal = 4,
518 		/**
519 		
520 		*/
521 		textureRim = 5,
522 		/**
523 		
524 		*/
525 		textureClearcoat = 6,
526 		/**
527 		
528 		*/
529 		textureFlowmap = 7,
530 		/**
531 		
532 		*/
533 		textureAmbientOcclusion = 8,
534 		/**
535 		
536 		*/
537 		textureDepth = 9,
538 		/**
539 		
540 		*/
541 		textureSubsurfaceScattering = 10,
542 		/**
543 		
544 		*/
545 		textureTransmission = 11,
546 		/**
547 		
548 		*/
549 		textureRefraction = 12,
550 		/**
551 		
552 		*/
553 		textureDetailMask = 13,
554 		/**
555 		
556 		*/
557 		textureDetailAlbedo = 14,
558 		/**
559 		
560 		*/
561 		textureDetailNormal = 15,
562 		/**
563 		
564 		*/
565 		textureMax = 16,
566 	}
567 	/// 
568 	enum Constants : int
569 	{
570 		diffuseBurley = 0,
571 		cullBack = 0,
572 		distanceFadeDisabled = 0,
573 		emissionOpAdd = 0,
574 		depthDrawOpaqueOnly = 0,
575 		blendModeMix = 0,
576 		featureTransparent = 0,
577 		flagUnshaded = 0,
578 		billboardDisabled = 0,
579 		textureChannelRed = 0,
580 		textureAlbedo = 0,
581 		specularSchlickGgx = 0,
582 		detailUv1 = 0,
583 		diffuseLambert = 1,
584 		cullFront = 1,
585 		specularBlinn = 1,
586 		blendModeAdd = 1,
587 		depthDrawAlways = 1,
588 		textureChannelGreen = 1,
589 		textureMetallic = 1,
590 		featureEmission = 1,
591 		emissionOpMultiply = 1,
592 		flagUseVertexLighting = 1,
593 		billboardEnabled = 1,
594 		detailUv2 = 1,
595 		distanceFadePixelAlpha = 1,
596 		blendModeSub = 2,
597 		textureChannelBlue = 2,
598 		cullDisabled = 2,
599 		depthDrawDisabled = 2,
600 		specularPhong = 2,
601 		billboardFixedY = 2,
602 		distanceFadePixelDither = 2,
603 		diffuseLambertWrap = 2,
604 		featureNormalMapping = 2,
605 		textureRoughness = 2,
606 		flagDisableDepthTest = 2,
607 		blendModeMul = 3,
608 		featureRim = 3,
609 		flagAlbedoFromVertexColor = 3,
610 		diffuseOrenNayar = 3,
611 		specularToon = 3,
612 		billboardParticles = 3,
613 		depthDrawAlphaOpaquePrepass = 3,
614 		textureEmission = 3,
615 		distanceFadeObjectDither = 3,
616 		textureChannelAlpha = 3,
617 		featureClearcoat = 4,
618 		diffuseToon = 4,
619 		specularDisabled = 4,
620 		textureChannelGrayscale = 4,
621 		flagSrgbVertexColor = 4,
622 		textureNormal = 4,
623 		flagUsePointSize = 5,
624 		featureAnisotropy = 5,
625 		textureRim = 5,
626 		textureClearcoat = 6,
627 		featureAmbientOcclusion = 6,
628 		flagFixedSize = 6,
629 		flagBillboardKeepScale = 7,
630 		textureFlowmap = 7,
631 		featureDepthMapping = 7,
632 		flagUv1UseTriplanar = 8,
633 		featureSubsuraceScattering = 8,
634 		textureAmbientOcclusion = 8,
635 		featureTransmission = 9,
636 		flagUv2UseTriplanar = 9,
637 		textureDepth = 9,
638 		flagTriplanarUseWorld = 10,
639 		featureRefraction = 10,
640 		textureSubsurfaceScattering = 10,
641 		flagAoOnUv2 = 11,
642 		featureDetail = 11,
643 		textureTransmission = 11,
644 		featureMax = 12,
645 		flagEmissionOnUv2 = 12,
646 		textureRefraction = 12,
647 		flagUseAlphaScissor = 13,
648 		textureDetailMask = 13,
649 		textureDetailAlbedo = 14,
650 		flagAlbedoTextureForceSrgb = 14,
651 		textureDetailNormal = 15,
652 		flagDontReceiveShadows = 15,
653 		textureMax = 16,
654 		flagEnsureCorrectNormals = 16,
655 		flagDisableAmbientLight = 17,
656 		flagMax = 18,
657 	}
658 	/**
659 	
660 	*/
661 	void setAlbedo(in Color albedo)
662 	{
663 		checkClassBinding!(typeof(this))();
664 		ptrcall!(void)(_classBinding.setAlbedo, _godot_object, albedo);
665 	}
666 	/**
667 	
668 	*/
669 	Color getAlbedo() const
670 	{
671 		checkClassBinding!(typeof(this))();
672 		return ptrcall!(Color)(_classBinding.getAlbedo, _godot_object);
673 	}
674 	/**
675 	
676 	*/
677 	void setSpecular(in double specular)
678 	{
679 		checkClassBinding!(typeof(this))();
680 		ptrcall!(void)(_classBinding.setSpecular, _godot_object, specular);
681 	}
682 	/**
683 	
684 	*/
685 	double getSpecular() const
686 	{
687 		checkClassBinding!(typeof(this))();
688 		return ptrcall!(double)(_classBinding.getSpecular, _godot_object);
689 	}
690 	/**
691 	
692 	*/
693 	void setMetallic(in double metallic)
694 	{
695 		checkClassBinding!(typeof(this))();
696 		ptrcall!(void)(_classBinding.setMetallic, _godot_object, metallic);
697 	}
698 	/**
699 	
700 	*/
701 	double getMetallic() const
702 	{
703 		checkClassBinding!(typeof(this))();
704 		return ptrcall!(double)(_classBinding.getMetallic, _godot_object);
705 	}
706 	/**
707 	
708 	*/
709 	void setRoughness(in double roughness)
710 	{
711 		checkClassBinding!(typeof(this))();
712 		ptrcall!(void)(_classBinding.setRoughness, _godot_object, roughness);
713 	}
714 	/**
715 	
716 	*/
717 	double getRoughness() const
718 	{
719 		checkClassBinding!(typeof(this))();
720 		return ptrcall!(double)(_classBinding.getRoughness, _godot_object);
721 	}
722 	/**
723 	
724 	*/
725 	void setEmission(in Color emission)
726 	{
727 		checkClassBinding!(typeof(this))();
728 		ptrcall!(void)(_classBinding.setEmission, _godot_object, emission);
729 	}
730 	/**
731 	
732 	*/
733 	Color getEmission() const
734 	{
735 		checkClassBinding!(typeof(this))();
736 		return ptrcall!(Color)(_classBinding.getEmission, _godot_object);
737 	}
738 	/**
739 	
740 	*/
741 	void setEmissionEnergy(in double emission_energy)
742 	{
743 		checkClassBinding!(typeof(this))();
744 		ptrcall!(void)(_classBinding.setEmissionEnergy, _godot_object, emission_energy);
745 	}
746 	/**
747 	
748 	*/
749 	double getEmissionEnergy() const
750 	{
751 		checkClassBinding!(typeof(this))();
752 		return ptrcall!(double)(_classBinding.getEmissionEnergy, _godot_object);
753 	}
754 	/**
755 	
756 	*/
757 	void setNormalScale(in double normal_scale)
758 	{
759 		checkClassBinding!(typeof(this))();
760 		ptrcall!(void)(_classBinding.setNormalScale, _godot_object, normal_scale);
761 	}
762 	/**
763 	
764 	*/
765 	double getNormalScale() const
766 	{
767 		checkClassBinding!(typeof(this))();
768 		return ptrcall!(double)(_classBinding.getNormalScale, _godot_object);
769 	}
770 	/**
771 	
772 	*/
773 	void setRim(in double rim)
774 	{
775 		checkClassBinding!(typeof(this))();
776 		ptrcall!(void)(_classBinding.setRim, _godot_object, rim);
777 	}
778 	/**
779 	
780 	*/
781 	double getRim() const
782 	{
783 		checkClassBinding!(typeof(this))();
784 		return ptrcall!(double)(_classBinding.getRim, _godot_object);
785 	}
786 	/**
787 	
788 	*/
789 	void setRimTint(in double rim_tint)
790 	{
791 		checkClassBinding!(typeof(this))();
792 		ptrcall!(void)(_classBinding.setRimTint, _godot_object, rim_tint);
793 	}
794 	/**
795 	
796 	*/
797 	double getRimTint() const
798 	{
799 		checkClassBinding!(typeof(this))();
800 		return ptrcall!(double)(_classBinding.getRimTint, _godot_object);
801 	}
802 	/**
803 	
804 	*/
805 	void setClearcoat(in double clearcoat)
806 	{
807 		checkClassBinding!(typeof(this))();
808 		ptrcall!(void)(_classBinding.setClearcoat, _godot_object, clearcoat);
809 	}
810 	/**
811 	
812 	*/
813 	double getClearcoat() const
814 	{
815 		checkClassBinding!(typeof(this))();
816 		return ptrcall!(double)(_classBinding.getClearcoat, _godot_object);
817 	}
818 	/**
819 	
820 	*/
821 	void setClearcoatGloss(in double clearcoat_gloss)
822 	{
823 		checkClassBinding!(typeof(this))();
824 		ptrcall!(void)(_classBinding.setClearcoatGloss, _godot_object, clearcoat_gloss);
825 	}
826 	/**
827 	
828 	*/
829 	double getClearcoatGloss() const
830 	{
831 		checkClassBinding!(typeof(this))();
832 		return ptrcall!(double)(_classBinding.getClearcoatGloss, _godot_object);
833 	}
834 	/**
835 	
836 	*/
837 	void setAnisotropy(in double anisotropy)
838 	{
839 		checkClassBinding!(typeof(this))();
840 		ptrcall!(void)(_classBinding.setAnisotropy, _godot_object, anisotropy);
841 	}
842 	/**
843 	
844 	*/
845 	double getAnisotropy() const
846 	{
847 		checkClassBinding!(typeof(this))();
848 		return ptrcall!(double)(_classBinding.getAnisotropy, _godot_object);
849 	}
850 	/**
851 	
852 	*/
853 	void setDepthScale(in double depth_scale)
854 	{
855 		checkClassBinding!(typeof(this))();
856 		ptrcall!(void)(_classBinding.setDepthScale, _godot_object, depth_scale);
857 	}
858 	/**
859 	
860 	*/
861 	double getDepthScale() const
862 	{
863 		checkClassBinding!(typeof(this))();
864 		return ptrcall!(double)(_classBinding.getDepthScale, _godot_object);
865 	}
866 	/**
867 	
868 	*/
869 	void setSubsurfaceScatteringStrength(in double strength)
870 	{
871 		checkClassBinding!(typeof(this))();
872 		ptrcall!(void)(_classBinding.setSubsurfaceScatteringStrength, _godot_object, strength);
873 	}
874 	/**
875 	
876 	*/
877 	double getSubsurfaceScatteringStrength() const
878 	{
879 		checkClassBinding!(typeof(this))();
880 		return ptrcall!(double)(_classBinding.getSubsurfaceScatteringStrength, _godot_object);
881 	}
882 	/**
883 	
884 	*/
885 	void setTransmission(in Color transmission)
886 	{
887 		checkClassBinding!(typeof(this))();
888 		ptrcall!(void)(_classBinding.setTransmission, _godot_object, transmission);
889 	}
890 	/**
891 	
892 	*/
893 	Color getTransmission() const
894 	{
895 		checkClassBinding!(typeof(this))();
896 		return ptrcall!(Color)(_classBinding.getTransmission, _godot_object);
897 	}
898 	/**
899 	
900 	*/
901 	void setRefraction(in double refraction)
902 	{
903 		checkClassBinding!(typeof(this))();
904 		ptrcall!(void)(_classBinding.setRefraction, _godot_object, refraction);
905 	}
906 	/**
907 	
908 	*/
909 	double getRefraction() const
910 	{
911 		checkClassBinding!(typeof(this))();
912 		return ptrcall!(double)(_classBinding.getRefraction, _godot_object);
913 	}
914 	/**
915 	
916 	*/
917 	void setLineWidth(in double line_width)
918 	{
919 		checkClassBinding!(typeof(this))();
920 		ptrcall!(void)(_classBinding.setLineWidth, _godot_object, line_width);
921 	}
922 	/**
923 	
924 	*/
925 	double getLineWidth() const
926 	{
927 		checkClassBinding!(typeof(this))();
928 		return ptrcall!(double)(_classBinding.getLineWidth, _godot_object);
929 	}
930 	/**
931 	
932 	*/
933 	void setPointSize(in double point_size)
934 	{
935 		checkClassBinding!(typeof(this))();
936 		ptrcall!(void)(_classBinding.setPointSize, _godot_object, point_size);
937 	}
938 	/**
939 	
940 	*/
941 	double getPointSize() const
942 	{
943 		checkClassBinding!(typeof(this))();
944 		return ptrcall!(double)(_classBinding.getPointSize, _godot_object);
945 	}
946 	/**
947 	
948 	*/
949 	void setDetailUv(in long detail_uv)
950 	{
951 		checkClassBinding!(typeof(this))();
952 		ptrcall!(void)(_classBinding.setDetailUv, _godot_object, detail_uv);
953 	}
954 	/**
955 	
956 	*/
957 	SpatialMaterial.DetailUV getDetailUv() const
958 	{
959 		checkClassBinding!(typeof(this))();
960 		return ptrcall!(SpatialMaterial.DetailUV)(_classBinding.getDetailUv, _godot_object);
961 	}
962 	/**
963 	
964 	*/
965 	void setBlendMode(in long blend_mode)
966 	{
967 		checkClassBinding!(typeof(this))();
968 		ptrcall!(void)(_classBinding.setBlendMode, _godot_object, blend_mode);
969 	}
970 	/**
971 	
972 	*/
973 	SpatialMaterial.BlendMode getBlendMode() const
974 	{
975 		checkClassBinding!(typeof(this))();
976 		return ptrcall!(SpatialMaterial.BlendMode)(_classBinding.getBlendMode, _godot_object);
977 	}
978 	/**
979 	
980 	*/
981 	void setDepthDrawMode(in long depth_draw_mode)
982 	{
983 		checkClassBinding!(typeof(this))();
984 		ptrcall!(void)(_classBinding.setDepthDrawMode, _godot_object, depth_draw_mode);
985 	}
986 	/**
987 	
988 	*/
989 	SpatialMaterial.DepthDrawMode getDepthDrawMode() const
990 	{
991 		checkClassBinding!(typeof(this))();
992 		return ptrcall!(SpatialMaterial.DepthDrawMode)(_classBinding.getDepthDrawMode, _godot_object);
993 	}
994 	/**
995 	
996 	*/
997 	void setCullMode(in long cull_mode)
998 	{
999 		checkClassBinding!(typeof(this))();
1000 		ptrcall!(void)(_classBinding.setCullMode, _godot_object, cull_mode);
1001 	}
1002 	/**
1003 	
1004 	*/
1005 	SpatialMaterial.CullMode getCullMode() const
1006 	{
1007 		checkClassBinding!(typeof(this))();
1008 		return ptrcall!(SpatialMaterial.CullMode)(_classBinding.getCullMode, _godot_object);
1009 	}
1010 	/**
1011 	
1012 	*/
1013 	void setDiffuseMode(in long diffuse_mode)
1014 	{
1015 		checkClassBinding!(typeof(this))();
1016 		ptrcall!(void)(_classBinding.setDiffuseMode, _godot_object, diffuse_mode);
1017 	}
1018 	/**
1019 	
1020 	*/
1021 	SpatialMaterial.DiffuseMode getDiffuseMode() const
1022 	{
1023 		checkClassBinding!(typeof(this))();
1024 		return ptrcall!(SpatialMaterial.DiffuseMode)(_classBinding.getDiffuseMode, _godot_object);
1025 	}
1026 	/**
1027 	
1028 	*/
1029 	void setSpecularMode(in long specular_mode)
1030 	{
1031 		checkClassBinding!(typeof(this))();
1032 		ptrcall!(void)(_classBinding.setSpecularMode, _godot_object, specular_mode);
1033 	}
1034 	/**
1035 	
1036 	*/
1037 	SpatialMaterial.SpecularMode getSpecularMode() const
1038 	{
1039 		checkClassBinding!(typeof(this))();
1040 		return ptrcall!(SpatialMaterial.SpecularMode)(_classBinding.getSpecularMode, _godot_object);
1041 	}
1042 	/**
1043 	
1044 	*/
1045 	void setFlag(in long flag, in bool enable)
1046 	{
1047 		checkClassBinding!(typeof(this))();
1048 		ptrcall!(void)(_classBinding.setFlag, _godot_object, flag, enable);
1049 	}
1050 	/**
1051 	
1052 	*/
1053 	bool getFlag(in long flag) const
1054 	{
1055 		checkClassBinding!(typeof(this))();
1056 		return ptrcall!(bool)(_classBinding.getFlag, _godot_object, flag);
1057 	}
1058 	/**
1059 	
1060 	*/
1061 	void setFeature(in long feature, in bool enable)
1062 	{
1063 		checkClassBinding!(typeof(this))();
1064 		ptrcall!(void)(_classBinding.setFeature, _godot_object, feature, enable);
1065 	}
1066 	/**
1067 	
1068 	*/
1069 	bool getFeature(in long feature) const
1070 	{
1071 		checkClassBinding!(typeof(this))();
1072 		return ptrcall!(bool)(_classBinding.getFeature, _godot_object, feature);
1073 	}
1074 	/**
1075 	
1076 	*/
1077 	void setTexture(in long param, Texture texture)
1078 	{
1079 		checkClassBinding!(typeof(this))();
1080 		ptrcall!(void)(_classBinding.setTexture, _godot_object, param, texture);
1081 	}
1082 	/**
1083 	
1084 	*/
1085 	Ref!Texture getTexture(in long param) const
1086 	{
1087 		checkClassBinding!(typeof(this))();
1088 		return ptrcall!(Texture)(_classBinding.getTexture, _godot_object, param);
1089 	}
1090 	/**
1091 	
1092 	*/
1093 	void setDetailBlendMode(in long detail_blend_mode)
1094 	{
1095 		checkClassBinding!(typeof(this))();
1096 		ptrcall!(void)(_classBinding.setDetailBlendMode, _godot_object, detail_blend_mode);
1097 	}
1098 	/**
1099 	
1100 	*/
1101 	SpatialMaterial.BlendMode getDetailBlendMode() const
1102 	{
1103 		checkClassBinding!(typeof(this))();
1104 		return ptrcall!(SpatialMaterial.BlendMode)(_classBinding.getDetailBlendMode, _godot_object);
1105 	}
1106 	/**
1107 	
1108 	*/
1109 	void setUv1Scale(in Vector3 scale)
1110 	{
1111 		checkClassBinding!(typeof(this))();
1112 		ptrcall!(void)(_classBinding.setUv1Scale, _godot_object, scale);
1113 	}
1114 	/**
1115 	
1116 	*/
1117 	Vector3 getUv1Scale() const
1118 	{
1119 		checkClassBinding!(typeof(this))();
1120 		return ptrcall!(Vector3)(_classBinding.getUv1Scale, _godot_object);
1121 	}
1122 	/**
1123 	
1124 	*/
1125 	void setUv1Offset(in Vector3 offset)
1126 	{
1127 		checkClassBinding!(typeof(this))();
1128 		ptrcall!(void)(_classBinding.setUv1Offset, _godot_object, offset);
1129 	}
1130 	/**
1131 	
1132 	*/
1133 	Vector3 getUv1Offset() const
1134 	{
1135 		checkClassBinding!(typeof(this))();
1136 		return ptrcall!(Vector3)(_classBinding.getUv1Offset, _godot_object);
1137 	}
1138 	/**
1139 	
1140 	*/
1141 	void setUv1TriplanarBlendSharpness(in double sharpness)
1142 	{
1143 		checkClassBinding!(typeof(this))();
1144 		ptrcall!(void)(_classBinding.setUv1TriplanarBlendSharpness, _godot_object, sharpness);
1145 	}
1146 	/**
1147 	
1148 	*/
1149 	double getUv1TriplanarBlendSharpness() const
1150 	{
1151 		checkClassBinding!(typeof(this))();
1152 		return ptrcall!(double)(_classBinding.getUv1TriplanarBlendSharpness, _godot_object);
1153 	}
1154 	/**
1155 	
1156 	*/
1157 	void setUv2Scale(in Vector3 scale)
1158 	{
1159 		checkClassBinding!(typeof(this))();
1160 		ptrcall!(void)(_classBinding.setUv2Scale, _godot_object, scale);
1161 	}
1162 	/**
1163 	
1164 	*/
1165 	Vector3 getUv2Scale() const
1166 	{
1167 		checkClassBinding!(typeof(this))();
1168 		return ptrcall!(Vector3)(_classBinding.getUv2Scale, _godot_object);
1169 	}
1170 	/**
1171 	
1172 	*/
1173 	void setUv2Offset(in Vector3 offset)
1174 	{
1175 		checkClassBinding!(typeof(this))();
1176 		ptrcall!(void)(_classBinding.setUv2Offset, _godot_object, offset);
1177 	}
1178 	/**
1179 	
1180 	*/
1181 	Vector3 getUv2Offset() const
1182 	{
1183 		checkClassBinding!(typeof(this))();
1184 		return ptrcall!(Vector3)(_classBinding.getUv2Offset, _godot_object);
1185 	}
1186 	/**
1187 	
1188 	*/
1189 	void setUv2TriplanarBlendSharpness(in double sharpness)
1190 	{
1191 		checkClassBinding!(typeof(this))();
1192 		ptrcall!(void)(_classBinding.setUv2TriplanarBlendSharpness, _godot_object, sharpness);
1193 	}
1194 	/**
1195 	
1196 	*/
1197 	double getUv2TriplanarBlendSharpness() const
1198 	{
1199 		checkClassBinding!(typeof(this))();
1200 		return ptrcall!(double)(_classBinding.getUv2TriplanarBlendSharpness, _godot_object);
1201 	}
1202 	/**
1203 	
1204 	*/
1205 	void setBillboardMode(in long mode)
1206 	{
1207 		checkClassBinding!(typeof(this))();
1208 		ptrcall!(void)(_classBinding.setBillboardMode, _godot_object, mode);
1209 	}
1210 	/**
1211 	
1212 	*/
1213 	SpatialMaterial.BillboardMode getBillboardMode() const
1214 	{
1215 		checkClassBinding!(typeof(this))();
1216 		return ptrcall!(SpatialMaterial.BillboardMode)(_classBinding.getBillboardMode, _godot_object);
1217 	}
1218 	/**
1219 	
1220 	*/
1221 	void setParticlesAnimHFrames(in long frames)
1222 	{
1223 		checkClassBinding!(typeof(this))();
1224 		ptrcall!(void)(_classBinding.setParticlesAnimHFrames, _godot_object, frames);
1225 	}
1226 	/**
1227 	
1228 	*/
1229 	long getParticlesAnimHFrames() const
1230 	{
1231 		checkClassBinding!(typeof(this))();
1232 		return ptrcall!(long)(_classBinding.getParticlesAnimHFrames, _godot_object);
1233 	}
1234 	/**
1235 	
1236 	*/
1237 	void setParticlesAnimVFrames(in long frames)
1238 	{
1239 		checkClassBinding!(typeof(this))();
1240 		ptrcall!(void)(_classBinding.setParticlesAnimVFrames, _godot_object, frames);
1241 	}
1242 	/**
1243 	
1244 	*/
1245 	long getParticlesAnimVFrames() const
1246 	{
1247 		checkClassBinding!(typeof(this))();
1248 		return ptrcall!(long)(_classBinding.getParticlesAnimVFrames, _godot_object);
1249 	}
1250 	/**
1251 	
1252 	*/
1253 	void setParticlesAnimLoop(in long frames)
1254 	{
1255 		checkClassBinding!(typeof(this))();
1256 		ptrcall!(void)(_classBinding.setParticlesAnimLoop, _godot_object, frames);
1257 	}
1258 	/**
1259 	
1260 	*/
1261 	long getParticlesAnimLoop() const
1262 	{
1263 		checkClassBinding!(typeof(this))();
1264 		return ptrcall!(long)(_classBinding.getParticlesAnimLoop, _godot_object);
1265 	}
1266 	/**
1267 	
1268 	*/
1269 	void setDepthDeepParallax(in bool enable)
1270 	{
1271 		checkClassBinding!(typeof(this))();
1272 		ptrcall!(void)(_classBinding.setDepthDeepParallax, _godot_object, enable);
1273 	}
1274 	/**
1275 	
1276 	*/
1277 	bool isDepthDeepParallaxEnabled() const
1278 	{
1279 		checkClassBinding!(typeof(this))();
1280 		return ptrcall!(bool)(_classBinding.isDepthDeepParallaxEnabled, _godot_object);
1281 	}
1282 	/**
1283 	
1284 	*/
1285 	void setDepthDeepParallaxMinLayers(in long layer)
1286 	{
1287 		checkClassBinding!(typeof(this))();
1288 		ptrcall!(void)(_classBinding.setDepthDeepParallaxMinLayers, _godot_object, layer);
1289 	}
1290 	/**
1291 	
1292 	*/
1293 	long getDepthDeepParallaxMinLayers() const
1294 	{
1295 		checkClassBinding!(typeof(this))();
1296 		return ptrcall!(long)(_classBinding.getDepthDeepParallaxMinLayers, _godot_object);
1297 	}
1298 	/**
1299 	
1300 	*/
1301 	void setDepthDeepParallaxMaxLayers(in long layer)
1302 	{
1303 		checkClassBinding!(typeof(this))();
1304 		ptrcall!(void)(_classBinding.setDepthDeepParallaxMaxLayers, _godot_object, layer);
1305 	}
1306 	/**
1307 	
1308 	*/
1309 	long getDepthDeepParallaxMaxLayers() const
1310 	{
1311 		checkClassBinding!(typeof(this))();
1312 		return ptrcall!(long)(_classBinding.getDepthDeepParallaxMaxLayers, _godot_object);
1313 	}
1314 	/**
1315 	
1316 	*/
1317 	void setGrow(in double amount)
1318 	{
1319 		checkClassBinding!(typeof(this))();
1320 		ptrcall!(void)(_classBinding.setGrow, _godot_object, amount);
1321 	}
1322 	/**
1323 	
1324 	*/
1325 	double getGrow() const
1326 	{
1327 		checkClassBinding!(typeof(this))();
1328 		return ptrcall!(double)(_classBinding.getGrow, _godot_object);
1329 	}
1330 	/**
1331 	
1332 	*/
1333 	void setEmissionOperator(in long operator)
1334 	{
1335 		checkClassBinding!(typeof(this))();
1336 		ptrcall!(void)(_classBinding.setEmissionOperator, _godot_object, operator);
1337 	}
1338 	/**
1339 	
1340 	*/
1341 	SpatialMaterial.EmissionOperator getEmissionOperator() const
1342 	{
1343 		checkClassBinding!(typeof(this))();
1344 		return ptrcall!(SpatialMaterial.EmissionOperator)(_classBinding.getEmissionOperator, _godot_object);
1345 	}
1346 	/**
1347 	
1348 	*/
1349 	void setAoLightAffect(in double amount)
1350 	{
1351 		checkClassBinding!(typeof(this))();
1352 		ptrcall!(void)(_classBinding.setAoLightAffect, _godot_object, amount);
1353 	}
1354 	/**
1355 	
1356 	*/
1357 	double getAoLightAffect() const
1358 	{
1359 		checkClassBinding!(typeof(this))();
1360 		return ptrcall!(double)(_classBinding.getAoLightAffect, _godot_object);
1361 	}
1362 	/**
1363 	
1364 	*/
1365 	void setAlphaScissorThreshold(in double threshold)
1366 	{
1367 		checkClassBinding!(typeof(this))();
1368 		ptrcall!(void)(_classBinding.setAlphaScissorThreshold, _godot_object, threshold);
1369 	}
1370 	/**
1371 	
1372 	*/
1373 	double getAlphaScissorThreshold() const
1374 	{
1375 		checkClassBinding!(typeof(this))();
1376 		return ptrcall!(double)(_classBinding.getAlphaScissorThreshold, _godot_object);
1377 	}
1378 	/**
1379 	
1380 	*/
1381 	void setGrowEnabled(in bool enable)
1382 	{
1383 		checkClassBinding!(typeof(this))();
1384 		ptrcall!(void)(_classBinding.setGrowEnabled, _godot_object, enable);
1385 	}
1386 	/**
1387 	
1388 	*/
1389 	bool isGrowEnabled() const
1390 	{
1391 		checkClassBinding!(typeof(this))();
1392 		return ptrcall!(bool)(_classBinding.isGrowEnabled, _godot_object);
1393 	}
1394 	/**
1395 	
1396 	*/
1397 	void setMetallicTextureChannel(in long channel)
1398 	{
1399 		checkClassBinding!(typeof(this))();
1400 		ptrcall!(void)(_classBinding.setMetallicTextureChannel, _godot_object, channel);
1401 	}
1402 	/**
1403 	
1404 	*/
1405 	SpatialMaterial.TextureChannel getMetallicTextureChannel() const
1406 	{
1407 		checkClassBinding!(typeof(this))();
1408 		return ptrcall!(SpatialMaterial.TextureChannel)(_classBinding.getMetallicTextureChannel, _godot_object);
1409 	}
1410 	/**
1411 	
1412 	*/
1413 	void setRoughnessTextureChannel(in long channel)
1414 	{
1415 		checkClassBinding!(typeof(this))();
1416 		ptrcall!(void)(_classBinding.setRoughnessTextureChannel, _godot_object, channel);
1417 	}
1418 	/**
1419 	
1420 	*/
1421 	SpatialMaterial.TextureChannel getRoughnessTextureChannel() const
1422 	{
1423 		checkClassBinding!(typeof(this))();
1424 		return ptrcall!(SpatialMaterial.TextureChannel)(_classBinding.getRoughnessTextureChannel, _godot_object);
1425 	}
1426 	/**
1427 	
1428 	*/
1429 	void setAoTextureChannel(in long channel)
1430 	{
1431 		checkClassBinding!(typeof(this))();
1432 		ptrcall!(void)(_classBinding.setAoTextureChannel, _godot_object, channel);
1433 	}
1434 	/**
1435 	
1436 	*/
1437 	SpatialMaterial.TextureChannel getAoTextureChannel() const
1438 	{
1439 		checkClassBinding!(typeof(this))();
1440 		return ptrcall!(SpatialMaterial.TextureChannel)(_classBinding.getAoTextureChannel, _godot_object);
1441 	}
1442 	/**
1443 	
1444 	*/
1445 	void setRefractionTextureChannel(in long channel)
1446 	{
1447 		checkClassBinding!(typeof(this))();
1448 		ptrcall!(void)(_classBinding.setRefractionTextureChannel, _godot_object, channel);
1449 	}
1450 	/**
1451 	
1452 	*/
1453 	SpatialMaterial.TextureChannel getRefractionTextureChannel() const
1454 	{
1455 		checkClassBinding!(typeof(this))();
1456 		return ptrcall!(SpatialMaterial.TextureChannel)(_classBinding.getRefractionTextureChannel, _godot_object);
1457 	}
1458 	/**
1459 	
1460 	*/
1461 	void setProximityFade(in bool enabled)
1462 	{
1463 		checkClassBinding!(typeof(this))();
1464 		ptrcall!(void)(_classBinding.setProximityFade, _godot_object, enabled);
1465 	}
1466 	/**
1467 	
1468 	*/
1469 	bool isProximityFadeEnabled() const
1470 	{
1471 		checkClassBinding!(typeof(this))();
1472 		return ptrcall!(bool)(_classBinding.isProximityFadeEnabled, _godot_object);
1473 	}
1474 	/**
1475 	
1476 	*/
1477 	void setProximityFadeDistance(in double distance)
1478 	{
1479 		checkClassBinding!(typeof(this))();
1480 		ptrcall!(void)(_classBinding.setProximityFadeDistance, _godot_object, distance);
1481 	}
1482 	/**
1483 	
1484 	*/
1485 	double getProximityFadeDistance() const
1486 	{
1487 		checkClassBinding!(typeof(this))();
1488 		return ptrcall!(double)(_classBinding.getProximityFadeDistance, _godot_object);
1489 	}
1490 	/**
1491 	
1492 	*/
1493 	void setDistanceFade(in long mode)
1494 	{
1495 		checkClassBinding!(typeof(this))();
1496 		ptrcall!(void)(_classBinding.setDistanceFade, _godot_object, mode);
1497 	}
1498 	/**
1499 	
1500 	*/
1501 	SpatialMaterial.DistanceFadeMode getDistanceFade() const
1502 	{
1503 		checkClassBinding!(typeof(this))();
1504 		return ptrcall!(SpatialMaterial.DistanceFadeMode)(_classBinding.getDistanceFade, _godot_object);
1505 	}
1506 	/**
1507 	
1508 	*/
1509 	void setDistanceFadeMaxDistance(in double distance)
1510 	{
1511 		checkClassBinding!(typeof(this))();
1512 		ptrcall!(void)(_classBinding.setDistanceFadeMaxDistance, _godot_object, distance);
1513 	}
1514 	/**
1515 	
1516 	*/
1517 	double getDistanceFadeMaxDistance() const
1518 	{
1519 		checkClassBinding!(typeof(this))();
1520 		return ptrcall!(double)(_classBinding.getDistanceFadeMaxDistance, _godot_object);
1521 	}
1522 	/**
1523 	
1524 	*/
1525 	void setDistanceFadeMinDistance(in double distance)
1526 	{
1527 		checkClassBinding!(typeof(this))();
1528 		ptrcall!(void)(_classBinding.setDistanceFadeMinDistance, _godot_object, distance);
1529 	}
1530 	/**
1531 	
1532 	*/
1533 	double getDistanceFadeMinDistance() const
1534 	{
1535 		checkClassBinding!(typeof(this))();
1536 		return ptrcall!(double)(_classBinding.getDistanceFadeMinDistance, _godot_object);
1537 	}
1538 	/**
1539 	If `true` transparency is enabled on the body. Default value: `false`. See also $(D paramsBlendMode).
1540 	*/
1541 	@property bool flagsTransparent()
1542 	{
1543 		return getFeature(0);
1544 	}
1545 	/// ditto
1546 	@property void flagsTransparent(bool v)
1547 	{
1548 		setFeature(0, v);
1549 	}
1550 	/**
1551 	If `true` the object is unaffected by lighting. Default value: `false`.
1552 	*/
1553 	@property bool flagsUnshaded()
1554 	{
1555 		return getFlag(0);
1556 	}
1557 	/// ditto
1558 	@property void flagsUnshaded(bool v)
1559 	{
1560 		setFlag(0, v);
1561 	}
1562 	/**
1563 	If `true` lighting is calculated per vertex rather than per pixel. This may increase performance on low-end devices. Default value: `false`.
1564 	*/
1565 	@property bool flagsVertexLighting()
1566 	{
1567 		return getFlag(1);
1568 	}
1569 	/// ditto
1570 	@property void flagsVertexLighting(bool v)
1571 	{
1572 		setFlag(1, v);
1573 	}
1574 	/**
1575 	If `true` depth testing is disabled and the object will be drawn in render order.
1576 	*/
1577 	@property bool flagsNoDepthTest()
1578 	{
1579 		return getFlag(2);
1580 	}
1581 	/// ditto
1582 	@property void flagsNoDepthTest(bool v)
1583 	{
1584 		setFlag(2, v);
1585 	}
1586 	/**
1587 	If `true` render point size can be changed. Note: this is only effective for objects whose geometry is point-based rather than triangle-based. See also $(D paramsPointSize).
1588 	*/
1589 	@property bool flagsUsePointSize()
1590 	{
1591 		return getFlag(5);
1592 	}
1593 	/// ditto
1594 	@property void flagsUsePointSize(bool v)
1595 	{
1596 		setFlag(5, v);
1597 	}
1598 	/**
1599 	If `true` triplanar mapping is calculated in world space rather than object local space. See also $(D uv1Triplanar). Default value: `false`.
1600 	*/
1601 	@property bool flagsWorldTriplanar()
1602 	{
1603 		return getFlag(10);
1604 	}
1605 	/// ditto
1606 	@property void flagsWorldTriplanar(bool v)
1607 	{
1608 		setFlag(10, v);
1609 	}
1610 	/**
1611 	If `true` the object is rendered at the same size regardless of distance. Default value: `false`.
1612 	*/
1613 	@property bool flagsFixedSize()
1614 	{
1615 		return getFlag(6);
1616 	}
1617 	/// ditto
1618 	@property void flagsFixedSize(bool v)
1619 	{
1620 		setFlag(6, v);
1621 	}
1622 	/**
1623 	
1624 	*/
1625 	@property bool flagsAlbedoTexForceSrgb()
1626 	{
1627 		return getFlag(14);
1628 	}
1629 	/// ditto
1630 	@property void flagsAlbedoTexForceSrgb(bool v)
1631 	{
1632 		setFlag(14, v);
1633 	}
1634 	/**
1635 	If `true` the object receives no shadow that would otherwise be cast onto it. Default value: `false`.
1636 	*/
1637 	@property bool flagsDoNotReceiveShadows()
1638 	{
1639 		return getFlag(15);
1640 	}
1641 	/// ditto
1642 	@property void flagsDoNotReceiveShadows(bool v)
1643 	{
1644 		setFlag(15, v);
1645 	}
1646 	/**
1647 	If `true` the object receives no ambient light. Default value: `false`.
1648 	*/
1649 	@property bool flagsDisableAmbientLight()
1650 	{
1651 		return getFlag(17);
1652 	}
1653 	/// ditto
1654 	@property void flagsDisableAmbientLight(bool v)
1655 	{
1656 		setFlag(17, v);
1657 	}
1658 	/**
1659 	
1660 	*/
1661 	@property bool flagsEnsureCorrectNormals()
1662 	{
1663 		return getFlag(16);
1664 	}
1665 	/// ditto
1666 	@property void flagsEnsureCorrectNormals(bool v)
1667 	{
1668 		setFlag(16, v);
1669 	}
1670 	/**
1671 	If `true` the vertex color is used as albedo color. Default value: `false`.
1672 	*/
1673 	@property bool vertexColorUseAsAlbedo()
1674 	{
1675 		return getFlag(3);
1676 	}
1677 	/// ditto
1678 	@property void vertexColorUseAsAlbedo(bool v)
1679 	{
1680 		setFlag(3, v);
1681 	}
1682 	/**
1683 	If `true` the model's vertex colors are processed as sRGB mode. Default value: `false`.
1684 	*/
1685 	@property bool vertexColorIsSrgb()
1686 	{
1687 		return getFlag(4);
1688 	}
1689 	/// ditto
1690 	@property void vertexColorIsSrgb(bool v)
1691 	{
1692 		setFlag(4, v);
1693 	}
1694 	/**
1695 	The algorithm used for diffuse light scattering. See $(D diffusemode).
1696 	*/
1697 	@property SpatialMaterial.DiffuseMode paramsDiffuseMode()
1698 	{
1699 		return getDiffuseMode();
1700 	}
1701 	/// ditto
1702 	@property void paramsDiffuseMode(long v)
1703 	{
1704 		setDiffuseMode(v);
1705 	}
1706 	/**
1707 	The method for rendering the specular blob. See $(D specularmode).
1708 	*/
1709 	@property SpatialMaterial.SpecularMode paramsSpecularMode()
1710 	{
1711 		return getSpecularMode();
1712 	}
1713 	/// ditto
1714 	@property void paramsSpecularMode(long v)
1715 	{
1716 		setSpecularMode(v);
1717 	}
1718 	/**
1719 	The material's blend mode. Note that values other than `Mix` force the object into the transparent pipeline. See $(D blendmode).
1720 	*/
1721 	@property SpatialMaterial.BlendMode paramsBlendMode()
1722 	{
1723 		return getBlendMode();
1724 	}
1725 	/// ditto
1726 	@property void paramsBlendMode(long v)
1727 	{
1728 		setBlendMode(v);
1729 	}
1730 	/**
1731 	Which side of the object is not drawn when backfaces are rendered. See $(D cullmode).
1732 	*/
1733 	@property SpatialMaterial.CullMode paramsCullMode()
1734 	{
1735 		return getCullMode();
1736 	}
1737 	/// ditto
1738 	@property void paramsCullMode(long v)
1739 	{
1740 		setCullMode(v);
1741 	}
1742 	/**
1743 	Determines when depth rendering takes place. See $(D depthdrawmode). See also $(D flagsTransparent).
1744 	*/
1745 	@property SpatialMaterial.DepthDrawMode paramsDepthDrawMode()
1746 	{
1747 		return getDepthDrawMode();
1748 	}
1749 	/// ditto
1750 	@property void paramsDepthDrawMode(long v)
1751 	{
1752 		setDepthDrawMode(v);
1753 	}
1754 	/**
1755 	
1756 	*/
1757 	@property double paramsLineWidth()
1758 	{
1759 		return getLineWidth();
1760 	}
1761 	/// ditto
1762 	@property void paramsLineWidth(double v)
1763 	{
1764 		setLineWidth(v);
1765 	}
1766 	/**
1767 	The point size in pixels. See $(D flagsUsePointSize).
1768 	*/
1769 	@property double paramsPointSize()
1770 	{
1771 		return getPointSize();
1772 	}
1773 	/// ditto
1774 	@property void paramsPointSize(double v)
1775 	{
1776 		setPointSize(v);
1777 	}
1778 	/**
1779 	Controls how the object faces the camera. See $(D billboardmode).
1780 	*/
1781 	@property SpatialMaterial.BillboardMode paramsBillboardMode()
1782 	{
1783 		return getBillboardMode();
1784 	}
1785 	/// ditto
1786 	@property void paramsBillboardMode(long v)
1787 	{
1788 		setBillboardMode(v);
1789 	}
1790 	/**
1791 	
1792 	*/
1793 	@property bool paramsBillboardKeepScale()
1794 	{
1795 		return getFlag(7);
1796 	}
1797 	/// ditto
1798 	@property void paramsBillboardKeepScale(bool v)
1799 	{
1800 		setFlag(7, v);
1801 	}
1802 	/**
1803 	If `true` enables the vertex grow setting. See $(D paramsGrowAmount).
1804 	*/
1805 	@property bool paramsGrow()
1806 	{
1807 		return isGrowEnabled();
1808 	}
1809 	/// ditto
1810 	@property void paramsGrow(bool v)
1811 	{
1812 		setGrowEnabled(v);
1813 	}
1814 	/**
1815 	Grows object vertices in the direction of their normals.
1816 	*/
1817 	@property double paramsGrowAmount()
1818 	{
1819 		return getGrow();
1820 	}
1821 	/// ditto
1822 	@property void paramsGrowAmount(double v)
1823 	{
1824 		setGrow(v);
1825 	}
1826 	/**
1827 	
1828 	*/
1829 	@property bool paramsUseAlphaScissor()
1830 	{
1831 		return getFlag(13);
1832 	}
1833 	/// ditto
1834 	@property void paramsUseAlphaScissor(bool v)
1835 	{
1836 		setFlag(13, v);
1837 	}
1838 	/**
1839 	
1840 	*/
1841 	@property double paramsAlphaScissorThreshold()
1842 	{
1843 		return getAlphaScissorThreshold();
1844 	}
1845 	/// ditto
1846 	@property void paramsAlphaScissorThreshold(double v)
1847 	{
1848 		setAlphaScissorThreshold(v);
1849 	}
1850 	/**
1851 	The number of horizontal frames in the particle spritesheet. Only enabled when using `BillboardMode.BILLBOARD_PARTICLES`. See $(D paramsBillboardMode).
1852 	*/
1853 	@property long particlesAnimHFrames()
1854 	{
1855 		return getParticlesAnimHFrames();
1856 	}
1857 	/// ditto
1858 	@property void particlesAnimHFrames(long v)
1859 	{
1860 		setParticlesAnimHFrames(v);
1861 	}
1862 	/**
1863 	The number of vertical frames in the particle spritesheet. Only enabled when using `BillboardMode.BILLBOARD_PARTICLES`. See $(D paramsBillboardMode).
1864 	*/
1865 	@property long particlesAnimVFrames()
1866 	{
1867 		return getParticlesAnimVFrames();
1868 	}
1869 	/// ditto
1870 	@property void particlesAnimVFrames(long v)
1871 	{
1872 		setParticlesAnimVFrames(v);
1873 	}
1874 	/**
1875 	If `true` particle animations are looped. Only enabled when using `BillboardMode.BILLBOARD_PARTICLES`. See $(D paramsBillboardMode).
1876 	*/
1877 	@property long particlesAnimLoop()
1878 	{
1879 		return getParticlesAnimLoop();
1880 	}
1881 	/// ditto
1882 	@property void particlesAnimLoop(long v)
1883 	{
1884 		setParticlesAnimLoop(v);
1885 	}
1886 	/**
1887 	The material's base color.
1888 	*/
1889 	@property Color albedoColor()
1890 	{
1891 		return getAlbedo();
1892 	}
1893 	/// ditto
1894 	@property void albedoColor(Color v)
1895 	{
1896 		setAlbedo(v);
1897 	}
1898 	/**
1899 	
1900 	*/
1901 	@property Texture albedoTexture()
1902 	{
1903 		return getTexture(0);
1904 	}
1905 	/// ditto
1906 	@property void albedoTexture(Texture v)
1907 	{
1908 		setTexture(0, v);
1909 	}
1910 	/**
1911 	The reflectivity of the object's surface. The higher the value the more light is reflected.
1912 	*/
1913 	@property double metallic()
1914 	{
1915 		return getMetallic();
1916 	}
1917 	/// ditto
1918 	@property void metallic(double v)
1919 	{
1920 		setMetallic(v);
1921 	}
1922 	/**
1923 	General reflectivity amount. Note: unlike $(D metallic), this is not energy-conserving, so it should be left at `0.5` in most cases.  See also $(D roughness).
1924 	*/
1925 	@property double metallicSpecular()
1926 	{
1927 		return getSpecular();
1928 	}
1929 	/// ditto
1930 	@property void metallicSpecular(double v)
1931 	{
1932 		setSpecular(v);
1933 	}
1934 	/**
1935 	
1936 	*/
1937 	@property Texture metallicTexture()
1938 	{
1939 		return getTexture(1);
1940 	}
1941 	/// ditto
1942 	@property void metallicTexture(Texture v)
1943 	{
1944 		setTexture(1, v);
1945 	}
1946 	/**
1947 	
1948 	*/
1949 	@property SpatialMaterial.TextureChannel metallicTextureChannel()
1950 	{
1951 		return getMetallicTextureChannel();
1952 	}
1953 	/// ditto
1954 	@property void metallicTextureChannel(long v)
1955 	{
1956 		setMetallicTextureChannel(v);
1957 	}
1958 	/**
1959 	Surface reflection. A value of `0` represents a perfect mirror while a value of `1` completely blurs the reflection. See also $(D metallic).
1960 	*/
1961 	@property double roughness()
1962 	{
1963 		return getRoughness();
1964 	}
1965 	/// ditto
1966 	@property void roughness(double v)
1967 	{
1968 		setRoughness(v);
1969 	}
1970 	/**
1971 	
1972 	*/
1973 	@property Texture roughnessTexture()
1974 	{
1975 		return getTexture(2);
1976 	}
1977 	/// ditto
1978 	@property void roughnessTexture(Texture v)
1979 	{
1980 		setTexture(2, v);
1981 	}
1982 	/**
1983 	
1984 	*/
1985 	@property SpatialMaterial.TextureChannel roughnessTextureChannel()
1986 	{
1987 		return getRoughnessTextureChannel();
1988 	}
1989 	/// ditto
1990 	@property void roughnessTextureChannel(long v)
1991 	{
1992 		setRoughnessTextureChannel(v);
1993 	}
1994 	/**
1995 	If `true` the body emits light.
1996 	*/
1997 	@property bool emissionEnabled()
1998 	{
1999 		return getFeature(1);
2000 	}
2001 	/// ditto
2002 	@property void emissionEnabled(bool v)
2003 	{
2004 		setFeature(1, v);
2005 	}
2006 	/**
2007 	The emitted light's color. See $(D emissionEnabled).
2008 	*/
2009 	@property Color emission()
2010 	{
2011 		return getEmission();
2012 	}
2013 	/// ditto
2014 	@property void emission(Color v)
2015 	{
2016 		setEmission(v);
2017 	}
2018 	/**
2019 	The emitted light's strength. See $(D emissionEnabled).
2020 	*/
2021 	@property double emissionEnergy()
2022 	{
2023 		return getEmissionEnergy();
2024 	}
2025 	/// ditto
2026 	@property void emissionEnergy(double v)
2027 	{
2028 		setEmissionEnergy(v);
2029 	}
2030 	/**
2031 	
2032 	*/
2033 	@property SpatialMaterial.EmissionOperator emissionOperator()
2034 	{
2035 		return getEmissionOperator();
2036 	}
2037 	/// ditto
2038 	@property void emissionOperator(long v)
2039 	{
2040 		setEmissionOperator(v);
2041 	}
2042 	/**
2043 	
2044 	*/
2045 	@property bool emissionOnUv2()
2046 	{
2047 		return getFlag(12);
2048 	}
2049 	/// ditto
2050 	@property void emissionOnUv2(bool v)
2051 	{
2052 		setFlag(12, v);
2053 	}
2054 	/**
2055 	
2056 	*/
2057 	@property Texture emissionTexture()
2058 	{
2059 		return getTexture(3);
2060 	}
2061 	/// ditto
2062 	@property void emissionTexture(Texture v)
2063 	{
2064 		setTexture(3, v);
2065 	}
2066 	/**
2067 	If `true` normal mapping is enabled.
2068 	*/
2069 	@property bool normalEnabled()
2070 	{
2071 		return getFeature(2);
2072 	}
2073 	/// ditto
2074 	@property void normalEnabled(bool v)
2075 	{
2076 		setFeature(2, v);
2077 	}
2078 	/**
2079 	The strength of the normal map's effect.
2080 	*/
2081 	@property double normalScale()
2082 	{
2083 		return getNormalScale();
2084 	}
2085 	/// ditto
2086 	@property void normalScale(double v)
2087 	{
2088 		setNormalScale(v);
2089 	}
2090 	/**
2091 	
2092 	*/
2093 	@property Texture normalTexture()
2094 	{
2095 		return getTexture(4);
2096 	}
2097 	/// ditto
2098 	@property void normalTexture(Texture v)
2099 	{
2100 		setTexture(4, v);
2101 	}
2102 	/**
2103 	If `true` rim effect is enabled. Default value: `false`.
2104 	*/
2105 	@property bool rimEnabled()
2106 	{
2107 		return getFeature(3);
2108 	}
2109 	/// ditto
2110 	@property void rimEnabled(bool v)
2111 	{
2112 		setFeature(3, v);
2113 	}
2114 	/**
2115 	
2116 	*/
2117 	@property double rim()
2118 	{
2119 		return getRim();
2120 	}
2121 	/// ditto
2122 	@property void rim(double v)
2123 	{
2124 		setRim(v);
2125 	}
2126 	/**
2127 	The amount of to blend light and albedo color when rendering rim effect. If `0` the light color is used, while `1` means albedo color is used. An intermediate value generally works best.
2128 	*/
2129 	@property double rimTint()
2130 	{
2131 		return getRimTint();
2132 	}
2133 	/// ditto
2134 	@property void rimTint(double v)
2135 	{
2136 		setRimTint(v);
2137 	}
2138 	/**
2139 	
2140 	*/
2141 	@property Texture rimTexture()
2142 	{
2143 		return getTexture(5);
2144 	}
2145 	/// ditto
2146 	@property void rimTexture(Texture v)
2147 	{
2148 		setTexture(5, v);
2149 	}
2150 	/**
2151 	If `true` clearcoat rendering is enabled. Adds a secondary transparent pass to the material. Default value: `false`.
2152 	*/
2153 	@property bool clearcoatEnabled()
2154 	{
2155 		return getFeature(4);
2156 	}
2157 	/// ditto
2158 	@property void clearcoatEnabled(bool v)
2159 	{
2160 		setFeature(4, v);
2161 	}
2162 	/**
2163 	
2164 	*/
2165 	@property double clearcoat()
2166 	{
2167 		return getClearcoat();
2168 	}
2169 	/// ditto
2170 	@property void clearcoat(double v)
2171 	{
2172 		setClearcoat(v);
2173 	}
2174 	/**
2175 	
2176 	*/
2177 	@property double clearcoatGloss()
2178 	{
2179 		return getClearcoatGloss();
2180 	}
2181 	/// ditto
2182 	@property void clearcoatGloss(double v)
2183 	{
2184 		setClearcoatGloss(v);
2185 	}
2186 	/**
2187 	
2188 	*/
2189 	@property Texture clearcoatTexture()
2190 	{
2191 		return getTexture(6);
2192 	}
2193 	/// ditto
2194 	@property void clearcoatTexture(Texture v)
2195 	{
2196 		setTexture(6, v);
2197 	}
2198 	/**
2199 	If `true` anisotropy is enabled. Changes the shape of the specular blob and aligns it to tangent space. Default value: `false`.
2200 	*/
2201 	@property bool anisotropyEnabled()
2202 	{
2203 		return getFeature(5);
2204 	}
2205 	/// ditto
2206 	@property void anisotropyEnabled(bool v)
2207 	{
2208 		setFeature(5, v);
2209 	}
2210 	/**
2211 	The strength of the anisotropy effect.
2212 	*/
2213 	@property double anisotropy()
2214 	{
2215 		return getAnisotropy();
2216 	}
2217 	/// ditto
2218 	@property void anisotropy(double v)
2219 	{
2220 		setAnisotropy(v);
2221 	}
2222 	/**
2223 	
2224 	*/
2225 	@property Texture anisotropyFlowmap()
2226 	{
2227 		return getTexture(7);
2228 	}
2229 	/// ditto
2230 	@property void anisotropyFlowmap(Texture v)
2231 	{
2232 		setTexture(7, v);
2233 	}
2234 	/**
2235 	If `true` ambient occlusion is enabled.
2236 	*/
2237 	@property bool aoEnabled()
2238 	{
2239 		return getFeature(6);
2240 	}
2241 	/// ditto
2242 	@property void aoEnabled(bool v)
2243 	{
2244 		setFeature(6, v);
2245 	}
2246 	/**
2247 	
2248 	*/
2249 	@property double aoLightAffect()
2250 	{
2251 		return getAoLightAffect();
2252 	}
2253 	/// ditto
2254 	@property void aoLightAffect(double v)
2255 	{
2256 		setAoLightAffect(v);
2257 	}
2258 	/**
2259 	
2260 	*/
2261 	@property Texture aoTexture()
2262 	{
2263 		return getTexture(8);
2264 	}
2265 	/// ditto
2266 	@property void aoTexture(Texture v)
2267 	{
2268 		setTexture(8, v);
2269 	}
2270 	/**
2271 	
2272 	*/
2273 	@property bool aoOnUv2()
2274 	{
2275 		return getFlag(11);
2276 	}
2277 	/// ditto
2278 	@property void aoOnUv2(bool v)
2279 	{
2280 		setFlag(11, v);
2281 	}
2282 	/**
2283 	
2284 	*/
2285 	@property SpatialMaterial.TextureChannel aoTextureChannel()
2286 	{
2287 		return getAoTextureChannel();
2288 	}
2289 	/// ditto
2290 	@property void aoTextureChannel(long v)
2291 	{
2292 		setAoTextureChannel(v);
2293 	}
2294 	/**
2295 	If `true` Depth mapping is enabled. See also $(D normalEnabled).
2296 	*/
2297 	@property bool depthEnabled()
2298 	{
2299 		return getFeature(7);
2300 	}
2301 	/// ditto
2302 	@property void depthEnabled(bool v)
2303 	{
2304 		setFeature(7, v);
2305 	}
2306 	/**
2307 	
2308 	*/
2309 	@property double depthScale()
2310 	{
2311 		return getDepthScale();
2312 	}
2313 	/// ditto
2314 	@property void depthScale(double v)
2315 	{
2316 		setDepthScale(v);
2317 	}
2318 	/**
2319 	
2320 	*/
2321 	@property bool depthDeepParallax()
2322 	{
2323 		return isDepthDeepParallaxEnabled();
2324 	}
2325 	/// ditto
2326 	@property void depthDeepParallax(bool v)
2327 	{
2328 		setDepthDeepParallax(v);
2329 	}
2330 	/**
2331 	
2332 	*/
2333 	@property long depthMinLayers()
2334 	{
2335 		return getDepthDeepParallaxMinLayers();
2336 	}
2337 	/// ditto
2338 	@property void depthMinLayers(long v)
2339 	{
2340 		setDepthDeepParallaxMinLayers(v);
2341 	}
2342 	/**
2343 	
2344 	*/
2345 	@property long depthMaxLayers()
2346 	{
2347 		return getDepthDeepParallaxMaxLayers();
2348 	}
2349 	/// ditto
2350 	@property void depthMaxLayers(long v)
2351 	{
2352 		setDepthDeepParallaxMaxLayers(v);
2353 	}
2354 	/**
2355 	
2356 	*/
2357 	@property Texture depthTexture()
2358 	{
2359 		return getTexture(9);
2360 	}
2361 	/// ditto
2362 	@property void depthTexture(Texture v)
2363 	{
2364 		setTexture(9, v);
2365 	}
2366 	/**
2367 	If `true` subsurface scattering is enabled. Emulates light that penetrates an object's surface, is scattered, and then emerges.
2368 	*/
2369 	@property bool subsurfScatterEnabled()
2370 	{
2371 		return getFeature(8);
2372 	}
2373 	/// ditto
2374 	@property void subsurfScatterEnabled(bool v)
2375 	{
2376 		setFeature(8, v);
2377 	}
2378 	/**
2379 	The strength of the subsurface scattering effect.
2380 	*/
2381 	@property double subsurfScatterStrength()
2382 	{
2383 		return getSubsurfaceScatteringStrength();
2384 	}
2385 	/// ditto
2386 	@property void subsurfScatterStrength(double v)
2387 	{
2388 		setSubsurfaceScatteringStrength(v);
2389 	}
2390 	/**
2391 	
2392 	*/
2393 	@property Texture subsurfScatterTexture()
2394 	{
2395 		return getTexture(10);
2396 	}
2397 	/// ditto
2398 	@property void subsurfScatterTexture(Texture v)
2399 	{
2400 		setTexture(10, v);
2401 	}
2402 	/**
2403 	If `true` the transmission effect is enabled. Default value: `false`.
2404 	*/
2405 	@property bool transmissionEnabled()
2406 	{
2407 		return getFeature(9);
2408 	}
2409 	/// ditto
2410 	@property void transmissionEnabled(bool v)
2411 	{
2412 		setFeature(9, v);
2413 	}
2414 	/**
2415 	The color used by the transmission effect. Represents the light passing through an object.
2416 	*/
2417 	@property Color transmission()
2418 	{
2419 		return getTransmission();
2420 	}
2421 	/// ditto
2422 	@property void transmission(Color v)
2423 	{
2424 		setTransmission(v);
2425 	}
2426 	/**
2427 	
2428 	*/
2429 	@property Texture transmissionTexture()
2430 	{
2431 		return getTexture(11);
2432 	}
2433 	/// ditto
2434 	@property void transmissionTexture(Texture v)
2435 	{
2436 		setTexture(11, v);
2437 	}
2438 	/**
2439 	If `true` the refraction effect is enabled. Distorts transparency based on light from behind the object. Default value: `false`.
2440 	*/
2441 	@property bool refractionEnabled()
2442 	{
2443 		return getFeature(10);
2444 	}
2445 	/// ditto
2446 	@property void refractionEnabled(bool v)
2447 	{
2448 		setFeature(10, v);
2449 	}
2450 	/**
2451 	The strength of the refraction effect.
2452 	*/
2453 	@property double refractionScale()
2454 	{
2455 		return getRefraction();
2456 	}
2457 	/// ditto
2458 	@property void refractionScale(double v)
2459 	{
2460 		setRefraction(v);
2461 	}
2462 	/**
2463 	
2464 	*/
2465 	@property Texture refractionTexture()
2466 	{
2467 		return getTexture(12);
2468 	}
2469 	/// ditto
2470 	@property void refractionTexture(Texture v)
2471 	{
2472 		setTexture(12, v);
2473 	}
2474 	/**
2475 	
2476 	*/
2477 	@property SpatialMaterial.TextureChannel refractionTextureChannel()
2478 	{
2479 		return getRefractionTextureChannel();
2480 	}
2481 	/// ditto
2482 	@property void refractionTextureChannel(long v)
2483 	{
2484 		setRefractionTextureChannel(v);
2485 	}
2486 	/**
2487 	
2488 	*/
2489 	@property bool detailEnabled()
2490 	{
2491 		return getFeature(11);
2492 	}
2493 	/// ditto
2494 	@property void detailEnabled(bool v)
2495 	{
2496 		setFeature(11, v);
2497 	}
2498 	/**
2499 	
2500 	*/
2501 	@property Texture detailMask()
2502 	{
2503 		return getTexture(13);
2504 	}
2505 	/// ditto
2506 	@property void detailMask(Texture v)
2507 	{
2508 		setTexture(13, v);
2509 	}
2510 	/**
2511 	
2512 	*/
2513 	@property SpatialMaterial.BlendMode detailBlendMode()
2514 	{
2515 		return getDetailBlendMode();
2516 	}
2517 	/// ditto
2518 	@property void detailBlendMode(long v)
2519 	{
2520 		setDetailBlendMode(v);
2521 	}
2522 	/**
2523 	
2524 	*/
2525 	@property SpatialMaterial.DetailUV detailUvLayer()
2526 	{
2527 		return getDetailUv();
2528 	}
2529 	/// ditto
2530 	@property void detailUvLayer(long v)
2531 	{
2532 		setDetailUv(v);
2533 	}
2534 	/**
2535 	
2536 	*/
2537 	@property Texture detailAlbedo()
2538 	{
2539 		return getTexture(14);
2540 	}
2541 	/// ditto
2542 	@property void detailAlbedo(Texture v)
2543 	{
2544 		setTexture(14, v);
2545 	}
2546 	/**
2547 	
2548 	*/
2549 	@property Texture detailNormal()
2550 	{
2551 		return getTexture(15);
2552 	}
2553 	/// ditto
2554 	@property void detailNormal(Texture v)
2555 	{
2556 		setTexture(15, v);
2557 	}
2558 	/**
2559 	
2560 	*/
2561 	@property Vector3 uv1Scale()
2562 	{
2563 		return getUv1Scale();
2564 	}
2565 	/// ditto
2566 	@property void uv1Scale(Vector3 v)
2567 	{
2568 		setUv1Scale(v);
2569 	}
2570 	/**
2571 	
2572 	*/
2573 	@property Vector3 uv1Offset()
2574 	{
2575 		return getUv1Offset();
2576 	}
2577 	/// ditto
2578 	@property void uv1Offset(Vector3 v)
2579 	{
2580 		setUv1Offset(v);
2581 	}
2582 	/**
2583 	
2584 	*/
2585 	@property bool uv1Triplanar()
2586 	{
2587 		return getFlag(8);
2588 	}
2589 	/// ditto
2590 	@property void uv1Triplanar(bool v)
2591 	{
2592 		setFlag(8, v);
2593 	}
2594 	/**
2595 	
2596 	*/
2597 	@property double uv1TriplanarSharpness()
2598 	{
2599 		return getUv1TriplanarBlendSharpness();
2600 	}
2601 	/// ditto
2602 	@property void uv1TriplanarSharpness(double v)
2603 	{
2604 		setUv1TriplanarBlendSharpness(v);
2605 	}
2606 	/**
2607 	
2608 	*/
2609 	@property Vector3 uv2Scale()
2610 	{
2611 		return getUv2Scale();
2612 	}
2613 	/// ditto
2614 	@property void uv2Scale(Vector3 v)
2615 	{
2616 		setUv2Scale(v);
2617 	}
2618 	/**
2619 	
2620 	*/
2621 	@property Vector3 uv2Offset()
2622 	{
2623 		return getUv2Offset();
2624 	}
2625 	/// ditto
2626 	@property void uv2Offset(Vector3 v)
2627 	{
2628 		setUv2Offset(v);
2629 	}
2630 	/**
2631 	
2632 	*/
2633 	@property bool uv2Triplanar()
2634 	{
2635 		return getFlag(9);
2636 	}
2637 	/// ditto
2638 	@property void uv2Triplanar(bool v)
2639 	{
2640 		setFlag(9, v);
2641 	}
2642 	/**
2643 	
2644 	*/
2645 	@property double uv2TriplanarSharpness()
2646 	{
2647 		return getUv2TriplanarBlendSharpness();
2648 	}
2649 	/// ditto
2650 	@property void uv2TriplanarSharpness(double v)
2651 	{
2652 		setUv2TriplanarBlendSharpness(v);
2653 	}
2654 	/**
2655 	If `true` the proximity and distance fade effect is enabled. Default value: `false`.
2656 	*/
2657 	@property bool proximityFadeEnable()
2658 	{
2659 		return isProximityFadeEnabled();
2660 	}
2661 	/// ditto
2662 	@property void proximityFadeEnable(bool v)
2663 	{
2664 		setProximityFade(v);
2665 	}
2666 	/**
2667 	
2668 	*/
2669 	@property double proximityFadeDistance()
2670 	{
2671 		return getProximityFadeDistance();
2672 	}
2673 	/// ditto
2674 	@property void proximityFadeDistance(double v)
2675 	{
2676 		setProximityFadeDistance(v);
2677 	}
2678 	/**
2679 	
2680 	*/
2681 	@property SpatialMaterial.DistanceFadeMode distanceFadeMode()
2682 	{
2683 		return getDistanceFade();
2684 	}
2685 	/// ditto
2686 	@property void distanceFadeMode(long v)
2687 	{
2688 		setDistanceFade(v);
2689 	}
2690 	/**
2691 	
2692 	*/
2693 	@property double distanceFadeMinDistance()
2694 	{
2695 		return getDistanceFadeMinDistance();
2696 	}
2697 	/// ditto
2698 	@property void distanceFadeMinDistance(double v)
2699 	{
2700 		setDistanceFadeMinDistance(v);
2701 	}
2702 	/**
2703 	
2704 	*/
2705 	@property double distanceFadeMaxDistance()
2706 	{
2707 		return getDistanceFadeMaxDistance();
2708 	}
2709 	/// ditto
2710 	@property void distanceFadeMaxDistance(double v)
2711 	{
2712 		setDistanceFadeMaxDistance(v);
2713 	}
2714 }