Quick Smoke: Only generate Fire/Smoke Nodes when actually used, this is a bit faster for the renderer.

This commit is contained in:
Thomas Dinges 2014-09-25 12:44:06 +02:00
parent 42abfe4853
commit 69e41d473c

@ -387,94 +387,96 @@ class QuickSmoke(Operator):
links.new(node_add_shader_1.outputs["Shader"], links.new(node_add_shader_1.outputs["Shader"],
node_out.inputs["Volume"]) node_out.inputs["Volume"])
# Smoke if self.style in {'SMOKE', 'BOTH'}:
# Smoke
# Add shader 2 # Add shader 2
node_add_shader_2 = nodes.new(type='ShaderNodeAddShader') node_add_shader_2 = nodes.new(type='ShaderNodeAddShader')
node_add_shader_2.location = grid_location(4, 2) node_add_shader_2.location = grid_location(4, 2)
links.new(node_add_shader_2.outputs["Shader"], links.new(node_add_shader_2.outputs["Shader"],
node_add_shader_1.inputs[0]) node_add_shader_1.inputs[0])
# Volume scatter # Volume scatter
node_scatter = nodes.new(type='ShaderNodeVolumeScatter') node_scatter = nodes.new(type='ShaderNodeVolumeScatter')
node_scatter.location = grid_location(3, 3) node_scatter.location = grid_location(3, 3)
links.new(node_scatter.outputs["Volume"], links.new(node_scatter.outputs["Volume"],
node_add_shader_2.inputs[0]) node_add_shader_2.inputs[0])
# Volume absorption # Volume absorption
node_absorption = nodes.new(type='ShaderNodeVolumeAbsorption') node_absorption = nodes.new(type='ShaderNodeVolumeAbsorption')
node_absorption.location = grid_location(3, 2) node_absorption.location = grid_location(3, 2)
links.new(node_absorption.outputs["Volume"], links.new(node_absorption.outputs["Volume"],
node_add_shader_2.inputs[1]) node_add_shader_2.inputs[1])
# Density Multiplier # Density Multiplier
node_densmult = nodes.new(type='ShaderNodeMath') node_densmult = nodes.new(type='ShaderNodeMath')
node_densmult.location = grid_location(2, 2) node_densmult.location = grid_location(2, 2)
node_densmult.operation = 'MULTIPLY' node_densmult.operation = 'MULTIPLY'
node_densmult.inputs[1].default_value = 5.0 node_densmult.inputs[1].default_value = 5.0
links.new(node_densmult.outputs["Value"], links.new(node_densmult.outputs["Value"],
node_scatter.inputs["Density"]) node_scatter.inputs["Density"])
links.new(node_densmult.outputs["Value"], links.new(node_densmult.outputs["Value"],
node_absorption.inputs["Density"]) node_absorption.inputs["Density"])
# Attribute "density" # Attribute "density"
node_attrib_density = nodes.new(type='ShaderNodeAttribute') node_attrib_density = nodes.new(type='ShaderNodeAttribute')
node_attrib_density.attribute_name = "density" node_attrib_density.attribute_name = "density"
node_attrib_density.location = grid_location(1, 2) node_attrib_density.location = grid_location(1, 2)
links.new(node_attrib_density.outputs["Fac"], links.new(node_attrib_density.outputs["Fac"],
node_densmult.inputs[0]) node_densmult.inputs[0])
# Attribute "color" # Attribute "color"
node_attrib_color = nodes.new(type='ShaderNodeAttribute') node_attrib_color = nodes.new(type='ShaderNodeAttribute')
node_attrib_color.attribute_name = "color" node_attrib_color.attribute_name = "color"
node_attrib_color.location = grid_location(2, 3) node_attrib_color.location = grid_location(2, 3)
links.new(node_attrib_color.outputs["Color"], links.new(node_attrib_color.outputs["Color"],
node_scatter.inputs["Color"]) node_scatter.inputs["Color"])
links.new(node_attrib_color.outputs["Color"], links.new(node_attrib_color.outputs["Color"],
node_absorption.inputs["Color"]) node_absorption.inputs["Color"])
# Fire if self.style in {'FIRE', 'BOTH'}:
# Fire
# Emission # Emission
node_emission = nodes.new(type='ShaderNodeEmission') node_emission = nodes.new(type='ShaderNodeEmission')
node_emission.inputs["Color"].default_value = (0.8, 0.1, 0.01, 1.0) node_emission.inputs["Color"].default_value = (0.8, 0.1, 0.01, 1.0)
node_emission.location = grid_location(4, 1) node_emission.location = grid_location(4, 1)
links.new(node_emission.outputs["Emission"], links.new(node_emission.outputs["Emission"],
node_add_shader_1.inputs[1]) node_add_shader_1.inputs[1])
# Flame strength multiplier # Flame strength multiplier
node_flame_strength_mult = nodes.new(type='ShaderNodeMath') node_flame_strength_mult = nodes.new(type='ShaderNodeMath')
node_flame_strength_mult.location = grid_location(3, 1) node_flame_strength_mult.location = grid_location(3, 1)
node_flame_strength_mult.operation = 'MULTIPLY' node_flame_strength_mult.operation = 'MULTIPLY'
node_flame_strength_mult.inputs[1].default_value = 2.5 node_flame_strength_mult.inputs[1].default_value = 2.5
links.new(node_flame_strength_mult.outputs["Value"], links.new(node_flame_strength_mult.outputs["Value"],
node_emission.inputs["Strength"]) node_emission.inputs["Strength"])
# Color ramp Flame # Color ramp Flame
node_flame_ramp = nodes.new(type='ShaderNodeValToRGB') node_flame_ramp = nodes.new(type='ShaderNodeValToRGB')
node_flame_ramp.location = grid_location(1, 1) node_flame_ramp.location = grid_location(1, 1)
ramp = node_flame_ramp.color_ramp ramp = node_flame_ramp.color_ramp
ramp.interpolation = 'EASE' ramp.interpolation = 'EASE'
# orange # orange
elem = ramp.elements.new(0.5) elem = ramp.elements.new(0.5)
elem.color = (1.0, 0.128, 0.0, 1.0) elem.color = (1.0, 0.128, 0.0, 1.0)
# yellow # yellow
elem = ramp.elements.new(0.9) elem = ramp.elements.new(0.9)
elem.color = (0.9, 0.6, 0.1, 1.0) elem.color = (0.9, 0.6, 0.1, 1.0)
links.new(node_flame_ramp.outputs["Color"], links.new(node_flame_ramp.outputs["Color"],
node_emission.inputs["Color"]) node_emission.inputs["Color"])
# Attribute "flame" # Attribute "flame"
node_attrib_flame = nodes.new(type='ShaderNodeAttribute') node_attrib_flame = nodes.new(type='ShaderNodeAttribute')
node_attrib_flame.attribute_name = "flame" node_attrib_flame.attribute_name = "flame"
node_attrib_flame.location = grid_location(0, 1) node_attrib_flame.location = grid_location(0, 1)
links.new(node_attrib_flame.outputs["Fac"], links.new(node_attrib_flame.outputs["Fac"],
node_flame_ramp.inputs["Fac"]) node_flame_ramp.inputs["Fac"])
links.new(node_attrib_flame.outputs["Fac"], links.new(node_attrib_flame.outputs["Fac"],
node_flame_strength_mult.inputs[0]) node_flame_strength_mult.inputs[0])
# Blender Internal # Blender Internal
else: else: