Prechádzať zdrojové kódy

Update light exporting, shader material due to blender change

1. spot light and point light has its energy unit enlarged by 100 times
2. a new attribute 'Alpha' is added to principled BSDF node
Jason0214 6 rokov pred
rodič
commit
cffffa9691

+ 12 - 17
io_scene_godot/converters/simple_nodes.py

@@ -91,14 +91,17 @@ class LightNode(NodeTemplate):
     _light_attr_conv = [
         AttributeConvertInfo(
             'specular_factor', 'light_specular', lambda x: x),
-        AttributeConvertInfo('energy', 'light_energy', lambda x: x),
         AttributeConvertInfo('color', 'light_color', gamma_correct),
         AttributeConvertInfo('shadow_color', 'shadow_color', gamma_correct),
     ]
     _omni_attr_conv = [
+        AttributeConvertInfo(
+            'energy', 'light_energy', lambda x: abs(x / 100.0)),
         AttributeConvertInfo('distance', 'omni_range', lambda x: x),
     ]
     _spot_attr_conv = [
+        AttributeConvertInfo(
+            'energy', 'light_energy', lambda x: abs(x / 100.0)),
         AttributeConvertInfo(
             'spot_size', 'spot_angle', lambda x: math.degrees(x/2)
         ),
@@ -107,6 +110,9 @@ class LightNode(NodeTemplate):
         ),
         AttributeConvertInfo('distance', 'spot_range', lambda x: x),
     ]
+    _directional_attr_conv = [
+        AttributeConvertInfo('energy', 'light_energy', abs),
+    ]
 
     @property
     def attribute_conversion(self):
@@ -116,6 +122,8 @@ class LightNode(NodeTemplate):
             return self._light_attr_conv + self._omni_attr_conv
         if self.get_type() == 'SpotLight':
             return self._light_attr_conv + self._spot_attr_conv
+        if self.get_type() == 'DirectionalLight':
+            return self._light_attr_conv + self._directional_attr_conv
         return self._light_attr_conv
 
 
@@ -147,22 +155,9 @@ def export_light_node(escn_file, export_settings, node, parent_gd_node):
         # These cannot be set via AttributeConvertInfo as it will not handle
         # animations correctly
         light_node['transform'] = fix_directional_transform(node.matrix_local)
-        if light.use_nodes:
-            emission = find_shader_node(light.node_tree, 'ShaderNodeEmission')
-            if emission:
-                strength = node_input(emission, 'Strength') or 100
-                color = node_input(emission, 'Color') or [1, 1, 1]
-                # we don't have an easy way to get these in cycles
-                # don't set them and let godot use its defaults
-                del light_node['light_specular']
-                del light_node['shadow_color']
-                # strength=100 in cycles is roughly equivalent to energy=1
-                light_node['light_energy'] = abs(strength / 100.0)
-                light_node['light_color'] = gamma_correct(color)
-                light_node['shadow_enabled'] = light.cycles.cast_shadow
-                light_node['light_negative'] = strength < 0
-        else:
-            light_node['shadow_enabled'] = light.use_shadow
+        light_node['light_negative'] = light.energy < 0
+        light_node['shadow_enabled'] = (
+            light.use_shadow and light.cycles.cast_shadow)
 
         escn_file.add_node(light_node)
 

+ 2 - 1
tests/reference_exports/light/animation_sun.escn

@@ -46,10 +46,11 @@ transform = Transform(7.26935, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 7.57504, 0.109
 [node name="Sun" type="DirectionalLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 transform = Transform(0.883713, -0.407974, 0.229367, -0.443707, -0.574356, 0.687924, -0.148916, -0.709699, -0.688587, 0.0, 5.2651, -7.49279)
+light_negative = false
 shadow_enabled = true
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="Sun"]

+ 10 - 5
tests/reference_exports/light/animation_various_lights.escn

@@ -146,13 +146,14 @@ surfaces/0 = {
 [node name="SpotDistanceChange" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 22.5
 spot_angle_attenuation = 1.25
 spot_range = 25.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 0.223751, 3.0266, 1.21379)
+light_negative = false
 shadow_enabled = true
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="SpotDistanceChange"]
@@ -163,13 +164,14 @@ anims/Spot.003Action.001 = SubResource(1)
 [node name="SpotTransformChange" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 22.5
 spot_angle_attenuation = 1.25
 spot_range = 25.0
 transform = Transform(0.477268, -3.84117e-08, 0.878758, -0.878758, -2.0862e-08, 0.477268, 0.0, -1.0, -4.37114e-08, -0.760565, 3.14704, 6.40839)
+light_negative = false
 shadow_enabled = true
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="SpotTransformChange"]
@@ -186,13 +188,14 @@ transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, -5.52819, 0.7
 [node name="ShadowColorChange" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 22.5
 spot_angle_attenuation = 1.25
 spot_range = 25.0
 transform = Transform(0.958848, -0.28392, -2.18837e-08, 0.178546, 0.602982, 0.777518, -0.220753, -0.745521, 0.628861, -4.64127, 6.11957, 1.29809)
+light_negative = false
 shadow_enabled = true
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="ShadowColorChange"]
@@ -209,13 +212,14 @@ transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, -4.22111, 1.2
 [node name="SpotRangeChange" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 22.5
 spot_angle_attenuation = 1.25
 spot_range = 25.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 6.6415, 3.84213, -6.03583)
+light_negative = false
 shadow_enabled = true
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="SpotRangeChange"]
@@ -226,11 +230,12 @@ anims/SpotAction = SubResource(6)
 [node name="LightColorChange" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 0.266431, 0.248791, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 1.0
 transform = Transform(-0.290865, -0.771101, 0.566393, -0.0551891, 0.604525, 0.794672, -0.955171, 0.199883, -0.218391, 5.25185, 0.215087, 5.49347)
+light_negative = false
 shadow_enabled = true
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="LightColorChange"]

+ 19 - 9
tests/reference_exports/light/cycles_lights.escn

@@ -24,51 +24,61 @@ surfaces/0 = {
 [node name="MissingEmission" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 0.01
 omni_range = 25.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, -2.0088, 2.79876e-05, -1.983)
+light_negative = false
+shadow_enabled = true
 
 [node name="PointNegative" type="OmniLight" parent="."]
 
-light_energy = 0.1
+light_specular = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 0.1
 omni_range = 25.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, -2.24976, 0.0868509, 1.52357)
-shadow_enabled = true
 light_negative = true
+shadow_enabled = true
 
 [node name="SpotNarrow" type="SpotLight" parent="."]
 
-light_energy = 1.0
+light_specular = 1.0
 light_color = Color(0.37995, 0.623953, 1.0, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 18.35
 spot_angle_attenuation = 0.19802
 spot_range = 25.0
 transform = Transform(0.961691, 0.273797, -0.0136299, 0.171724, -0.562921, 0.808474, 0.213685, -0.779843, -0.588373, 2.08892, 1.68058, 0.594427)
-shadow_enabled = true
 light_negative = false
+shadow_enabled = true
 
 [node name="SpotWideNoShadow" type="SpotLight" parent="."]
 
-light_energy = 1.0
+light_specular = 1.0
 light_color = Color(0.967385, 1.0, 0.49214, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 27.5
 spot_angle_attenuation = 1.25
 spot_range = 25.0
 transform = Transform(0.961691, 0.273797, -0.0136299, -0.180619, 0.670245, 0.719825, 0.206221, -0.689787, 0.694022, 2.08892, 1.68058, 0.0743143)
-shadow_enabled = false
 light_negative = false
+shadow_enabled = false
 
 [node name="Point" type="OmniLight" parent="."]
 
-light_energy = 0.3
+light_specular = 1.0
 light_color = Color(1.0, 0.429678, 0.88914, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 0.3
 omni_range = 25.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 0.0, 0.0723696, 0.0)
-shadow_enabled = true
 light_negative = false
+shadow_enabled = true
 
 [node name="Plane" type="MeshInstance" parent="."]
 

+ 8 - 4
tests/reference_exports/light/just_point_lights.escn

@@ -62,11 +62,12 @@ surfaces/0 = {
 [node name="Lamp003" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.836064, 0.0264334, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 5.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 0.0, 0.4, 1.0)
+light_negative = false
 shadow_enabled = true
 
 [node name="Cube001" type="MeshInstance" parent="."]
@@ -84,21 +85,23 @@ transform = Transform(0.3, 0.0, 0.0, 0.0, 0.6, 0.0, 0.0, 0.0, 0.3, -2.0, 0.0, 0.
 [node name="Lamp002" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.0, 1.0, 0.064745, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 5.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, -2.0, 0.4, 1.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Lamp001" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 0.0, 0.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 2.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, -6.0, 1.0, 3.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Plane" type="MeshInstance" parent="."]
@@ -110,11 +113,12 @@ transform = Transform(10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0,
 [node name="Lamp" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 2.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, -6.0, 1.0, 0.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Camera" type="Camera" parent="."]

+ 16 - 8
tests/reference_exports/light/just_spot_lights.escn

@@ -62,73 +62,79 @@ surfaces/0 = {
 [node name="Lamp007" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 5.0
 light_color = Color(0.0, 1.0, 0.901999, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 5.0
 spot_angle = 10.0
 spot_angle_attenuation = 20.0
 spot_range = 3.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 1.0, 2.0, -3.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Lamp006" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 5.0
 light_color = Color(0.0, 1.0, 0.901999, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 5.0
 spot_angle = 10.0
 spot_angle_attenuation = 0.19802
 spot_range = 3.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 2.0, 2.0, -3.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Lamp005" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.0, 1.0, 0.901999, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 10.0
 spot_angle_attenuation = 0.19802
 spot_range = 3.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 2.0, 2.0, -2.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Lamp002" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.0, 1.0, 0.901999, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 10.0
 spot_angle_attenuation = 20.0
 spot_range = 3.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, -4.37114e-08, 1.0, 0.0, -1.0, -4.37114e-08, 1.0, 2.0, -2.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Lamp001" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.0, 1.0, 0.901999, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 60.0
 spot_angle_attenuation = 1.25
 spot_range = 3.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, 0.906308, 0.422618, 0.0, -0.422618, 0.906308, 1.0, 1.0, 2.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Lamp000" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.122916, 1.0, 0.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 10.0
 spot_angle_attenuation = 1.25
 spot_range = 5.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, 0.906308, 0.422618, 0.0, -0.422618, 0.906308, -1.0, 1.0, 2.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Cube001" type="MeshInstance" parent="."]
@@ -146,25 +152,27 @@ transform = Transform(0.3, 0.0, 0.0, 0.0, 0.6, 0.0, 0.0, 0.0, 0.3, -4.0, 0.0, 0.
 [node name="Lamp004" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.995604, 0.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 37.5
 spot_angle_attenuation = 1.25
 spot_range = 5.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, 0.906308, 0.422618, 0.0, -0.422618, 0.906308, -4.0, 1.0, 2.0)
+light_negative = false
 shadow_enabled = true
 
 [node name="Lamp003" type="SpotLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(0.0, 0.612489, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 37.5
 spot_angle_attenuation = 1.25
 spot_range = 5.0
 transform = Transform(1.0, 0.0, 0.0, 0.0, 0.906308, 0.422618, 0.0, -0.422618, 0.906308, -6.0, 1.0, 2.0)
+light_negative = false
 shadow_enabled = false
 
 [node name="Plane" type="MeshInstance" parent="."]

+ 2 - 1
tests/reference_exports/material/material_search.escn

@@ -32,11 +32,12 @@ transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0
 [node name="Lamp" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 30.0
 transform = Transform(-0.290865, -0.771101, 0.566393, -0.0551891, 0.604525, 0.794672, -0.955171, 0.199883, -0.218391, 4.07625, 5.90386, -1.00545)
+light_negative = false
 shadow_enabled = true
 
 [node name="Camera" type="Camera" parent="."]

+ 2 - 1
tests/reference_exports/material/simple_materials.escn

@@ -57,11 +57,12 @@ transform = Transform(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0
 [node name="Lamp" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 30.0
 transform = Transform(-0.290865, -0.771101, 0.566393, -0.0551891, 0.604525, 0.794672, -0.955171, 0.199883, -0.218391, 4.07625, 5.90386, -1.00545)
+light_negative = false
 shadow_enabled = true
 
 [node name="Camera" type="Camera" parent="."]

+ 22 - 16
tests/reference_exports/material_cycle/material_anistropy.escn

@@ -79,9 +79,11 @@ void fragment () {
 	float node1_in14_ior = float(1.4500000476837158);
 	float node1_in15_transmission = float(0.0);
 	float node1_in16_transmissionroughness = float(0.0);
-	vec3 node1_in17_normal = NORMAL;
-	vec3 node1_in18_clearcoatnormal = vec3(0.0, 0.0, 0.0);
-	vec3 node1_in19_tangent = node0_out0_tangent;
+	vec4 node1_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
+	float node1_in18_alpha = float(1.0);
+	vec3 node1_in19_normal = NORMAL;
+	vec3 node1_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
+	vec3 node1_in21_tangent = node0_out0_tangent;
 	// output sockets definitions
 	vec3 node1_bsdf_out0_albedo;
 	float node1_bsdf_out1_sss_strength;
@@ -102,8 +104,8 @@ void fragment () {
 		node1_bsdf_out3_specular, node1_bsdf_out4_roughness, node1_bsdf_out5_clearcoat,
 		node1_bsdf_out6_clearcoat_gloss, node1_bsdf_out7_anisotropy,
 		node1_bsdf_out8_transmission, node1_bsdf_out9_ior);
-	space_convert_zup_to_yup(node1_in19_tangent);
-	dir_space_convert_world_to_view(node1_in19_tangent, INV_CAMERA_MATRIX);
+	space_convert_zup_to_yup(node1_in21_tangent);
+	dir_space_convert_world_to_view(node1_in21_tangent, INV_CAMERA_MATRIX);
 	
 	
 	ALBEDO = node1_bsdf_out0_albedo;
@@ -113,10 +115,10 @@ void fragment () {
 	ROUGHNESS = node1_bsdf_out4_roughness;
 	CLEARCOAT = node1_bsdf_out5_clearcoat;
 	CLEARCOAT_GLOSS = node1_bsdf_out6_clearcoat_gloss;
-	NORMAL = node1_in17_normal;
+	NORMAL = node1_in19_normal;
 	// uncomment it when you need it
 	// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node1_bsdf_out8_transmission;
-	TANGENT = normalize(cross(cross(node1_in19_tangent, NORMAL), NORMAL));
+	TANGENT = normalize(cross(cross(node1_in21_tangent, NORMAL), NORMAL));
 	BINORMAL = cross(TANGENT, NORMAL);
 	ANISOTROPY = node1_bsdf_out7_anisotropy;
 }
@@ -242,9 +244,11 @@ void fragment () {
 	float node1_in14_ior = float(1.4500000476837158);
 	float node1_in15_transmission = float(0.0);
 	float node1_in16_transmissionroughness = float(0.0);
-	vec3 node1_in17_normal = NORMAL;
-	vec3 node1_in18_clearcoatnormal = vec3(0.0, 0.0, 0.0);
-	vec3 node1_in19_tangent = node0_out0_object;
+	vec4 node1_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
+	float node1_in18_alpha = float(1.0);
+	vec3 node1_in19_normal = NORMAL;
+	vec3 node1_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
+	vec3 node1_in21_tangent = node0_out0_object;
 	// output sockets definitions
 	vec3 node1_bsdf_out0_albedo;
 	float node1_bsdf_out1_sss_strength;
@@ -265,8 +269,8 @@ void fragment () {
 		node1_bsdf_out3_specular, node1_bsdf_out4_roughness, node1_bsdf_out5_clearcoat,
 		node1_bsdf_out6_clearcoat_gloss, node1_bsdf_out7_anisotropy,
 		node1_bsdf_out8_transmission, node1_bsdf_out9_ior);
-	space_convert_zup_to_yup(node1_in19_tangent);
-	dir_space_convert_world_to_view(node1_in19_tangent, INV_CAMERA_MATRIX);
+	space_convert_zup_to_yup(node1_in21_tangent);
+	dir_space_convert_world_to_view(node1_in21_tangent, INV_CAMERA_MATRIX);
 	
 	
 	ALBEDO = node1_bsdf_out0_albedo;
@@ -276,10 +280,10 @@ void fragment () {
 	ROUGHNESS = node1_bsdf_out4_roughness;
 	CLEARCOAT = node1_bsdf_out5_clearcoat;
 	CLEARCOAT_GLOSS = node1_bsdf_out6_clearcoat_gloss;
-	NORMAL = node1_in17_normal;
+	NORMAL = node1_in19_normal;
 	// uncomment it when you need it
 	// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node1_bsdf_out8_transmission;
-	TANGENT = normalize(cross(cross(node1_in19_tangent, NORMAL), NORMAL));
+	TANGENT = normalize(cross(cross(node1_in21_tangent, NORMAL), NORMAL));
 	BINORMAL = cross(TANGENT, NORMAL);
 	ANISOTROPY = node1_bsdf_out7_anisotropy;
 }
@@ -314,11 +318,13 @@ surfaces/0 = {
 
 [node name="Point" type="DirectionalLight" parent="."]
 
-light_energy = 1.0
+light_specular = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 100.0
 transform = Transform(0.701062, -0.562597, -0.438174, 0.452107, -0.124517, 0.88323, -0.551463, -0.8173, 0.16706, -2.09735, 4.28268, -0.137035)
-shadow_enabled = true
 light_negative = false
+shadow_enabled = true
 
 [node name="object_with_uv" type="MeshInstance" parent="."]
 

+ 22 - 14
tests/reference_exports/material_cycle/material_cycle.escn

@@ -616,9 +616,11 @@ void fragment () {
 	float node1_in14_ior = float(1.4500000476837158);
 	float node1_in15_transmission = float(0.0);
 	float node1_in16_transmissionroughness = float(0.0);
-	vec3 node1_in17_normal = NORMAL;
-	vec3 node1_in18_clearcoatnormal = vec3(0.0, 0.0, 0.0);
-	vec3 node1_in19_tangent = TANGENT;
+	vec4 node1_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
+	float node1_in18_alpha = float(1.0);
+	vec3 node1_in19_normal = NORMAL;
+	vec3 node1_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
+	vec3 node1_in21_tangent = TANGENT;
 	// output sockets definitions
 	vec3 node1_bsdf_out0_albedo;
 	float node1_bsdf_out1_sss_strength;
@@ -648,11 +650,11 @@ void fragment () {
 	ROUGHNESS = node1_bsdf_out4_roughness;
 	CLEARCOAT = node1_bsdf_out5_clearcoat;
 	CLEARCOAT_GLOSS = node1_bsdf_out6_clearcoat_gloss;
-	NORMAL = node1_in17_normal;
+	NORMAL = node1_in19_normal;
 	// uncomment it when you need it
 	// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node1_bsdf_out8_transmission;
 	// uncomment it when you are modifing TANGENT
-	// TANGENT = normalize(cross(cross(node1_in19_tangent, NORMAL), NORMAL));
+	// TANGENT = normalize(cross(cross(node1_in21_tangent, NORMAL), NORMAL));
 	// BINORMAL = cross(TANGENT, NORMAL);
 	// uncomment it when you have tangent(UV) set
 	// ANISOTROPY = node1_bsdf_out7_anisotropy;
@@ -1453,9 +1455,11 @@ void fragment () {
 	float node3_in14_ior = float(1.4500000476837158);
 	float node3_in15_transmission = float(0.0);
 	float node3_in16_transmissionroughness = float(0.0);
-	vec3 node3_in17_normal = NORMAL;
-	vec3 node3_in18_clearcoatnormal = vec3(0.0, 0.0, 0.0);
-	vec3 node3_in19_tangent = TANGENT;
+	vec4 node3_in17_emission = vec4(0.0, 0.0, 0.0, 1.0);
+	float node3_in18_alpha = float(1.0);
+	vec3 node3_in19_normal = NORMAL;
+	vec3 node3_in20_clearcoatnormal = vec3(0.0, 0.0, 0.0);
+	vec3 node3_in21_tangent = TANGENT;
 	// output sockets definitions
 	vec3 node3_bsdf_out0_albedo;
 	float node3_bsdf_out1_sss_strength;
@@ -1485,11 +1489,11 @@ void fragment () {
 	ROUGHNESS = node3_bsdf_out4_roughness;
 	CLEARCOAT = node3_bsdf_out5_clearcoat;
 	CLEARCOAT_GLOSS = node3_bsdf_out6_clearcoat_gloss;
-	NORMAL = node3_in17_normal;
+	NORMAL = node3_in19_normal;
 	// uncomment it when you need it
 	// TRANSMISSION = vec3(1.0, 1.0, 1.0) * node3_bsdf_out8_transmission;
 	// uncomment it when you are modifing TANGENT
-	// TANGENT = normalize(cross(cross(node3_in19_tangent, NORMAL), NORMAL));
+	// TANGENT = normalize(cross(cross(node3_in21_tangent, NORMAL), NORMAL));
 	// BINORMAL = cross(TANGENT, NORMAL);
 	// uncomment it when you have tangent(UV) set
 	// ANISOTROPY = node3_bsdf_out7_anisotropy;
@@ -2014,25 +2018,29 @@ material/0 = SubResource(39)
 
 [node name="Spot001" type="SpotLight" parent="."]
 
-light_energy = 1.0
+light_specular = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 17.4
 spot_angle_attenuation = 1.25
 spot_range = 25.0
 transform = Transform(0.629608, 0.0765798, 0.77313, -0.776913, 0.06206, 0.626542, 0.0, -0.99513, 0.0985693, 5.32508, 4.74617, 0.487329)
-shadow_enabled = true
 light_negative = false
+shadow_enabled = true
 
 [node name="Spot" type="SpotLight" parent="."]
 
-light_energy = 1.0
+light_specular = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 spot_angle = 24.3
 spot_angle_attenuation = 1.25
 spot_range = 25.0
 transform = Transform(0.633641, 0.273452, -0.723687, 0.117184, 0.890727, 0.439173, 0.764701, -0.363082, 0.532357, -4.6068, 2.54209, 4.80618)
-shadow_enabled = true
 light_negative = false
+shadow_enabled = true
 
 [node name="Plane" type="MeshInstance" parent="."]
 

+ 4 - 2
tests/reference_exports/material_cycle/material_normal.escn

@@ -1143,11 +1143,13 @@ material/0 = SubResource(12)
 
 [node name="Lamp" type="DirectionalLight" parent="."]
 
-light_energy = 0.04
+light_specular = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
+shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 4.0
 transform = Transform(-0.404791, -0.439839, 0.801677, 0.221124, 0.803611, 0.552553, -0.88727, 0.400938, -0.228035, 4.07625, 1.70784, -1.00545)
-shadow_enabled = true
 light_negative = false
+shadow_enabled = true
 
 [node name="test_displacement" type="MeshInstance" parent="."]
 

+ 2 - 1
tests/reference_exports/mesh/physics.escn

@@ -315,11 +315,12 @@ transform = Transform(1.0, 0.0, 0.0, 0.0, 7.54979e-08, -1.0, 0.0, 1.0, 7.54979e-
 [node name="Lamp" type="OmniLight" parent="."]
 
 light_specular = 1.0
-light_energy = 1.0
 light_color = Color(1.0, 1.0, 1.0, 1.0)
 shadow_color = Color(0.0, 0.0, 0.0, 1.0)
+light_energy = 1.0
 omni_range = 30.0
 transform = Transform(-0.290865, -0.771101, 0.566393, -0.0551891, 0.604525, 0.794672, -0.955171, 0.199883, -0.218391, 4.07625, 7.32356, -1.00545)
+light_negative = false
 shadow_enabled = true
 
 [node name="Camera" type="Camera" parent="."]