Replace some wrd defs by individual word defs
This commit is contained in:
parent
1152b99e10
commit
569d139e4e
|
@ -2796,20 +2796,21 @@ class ArmoryExporter:
|
|||
|
||||
bgcol = world.arm_envtex_color
|
||||
# No compositor used
|
||||
if '_LDR' in wrd.world_defs:
|
||||
if '_LDR' in world.world_defs:
|
||||
for i in range(0, 3):
|
||||
bgcol[i] = pow(bgcol[i], 1.0 / 2.2)
|
||||
out_world['background_color'] = arm.utils.color_to_int(bgcol)
|
||||
|
||||
if '_EnvSky' in wrd.world_defs:
|
||||
if '_EnvSky' in world.world_defs:
|
||||
# Sky data for probe
|
||||
out_world['sun_direction'] = list(world.arm_envtex_sun_direction)
|
||||
out_world['turbidity'] = world.arm_envtex_turbidity
|
||||
out_world['ground_albedo'] = world.arm_envtex_ground_albedo
|
||||
|
||||
disable_hdr = world.arm_envtex_name.endswith('.jpg')
|
||||
if '_EnvTex' in wrd.world_defs or '_EnvImg' in wrd.world_defs:
|
||||
o['envmap'] = world.arm_envtex_name.rsplit('.', 1)[0]
|
||||
print('_EnvTex' in world.world_defs)
|
||||
if '_EnvTex' in world.world_defs or '_EnvImg' in world.world_defs:
|
||||
out_world['envmap'] = world.arm_envtex_name.rsplit('.', 1)[0]
|
||||
if disable_hdr:
|
||||
out_world['envmap'] += '.jpg'
|
||||
else:
|
||||
|
@ -2822,10 +2823,11 @@ class ArmoryExporter:
|
|||
arm_radiance = False
|
||||
radtex = world.arm_envtex_name.rsplit('.', 1)[0]
|
||||
irrsharmonics = world.arm_envtex_irr_name
|
||||
|
||||
# Radiance
|
||||
if '_EnvTex' in wrd.world_defs:
|
||||
if '_EnvTex' in world.world_defs:
|
||||
arm_radiance = rpdat.arm_radiance
|
||||
elif '_EnvSky' in wrd.world_defs:
|
||||
elif '_EnvSky' in world.world_defs:
|
||||
arm_radiance = rpdat.arm_radiance
|
||||
radtex = 'hosek'
|
||||
num_mips = world.arm_envtex_num_mips
|
||||
|
|
|
@ -18,10 +18,11 @@ def build():
|
|||
worlds.append(scene.world)
|
||||
build_node_tree(scene.world)
|
||||
|
||||
def build_node_tree(world):
|
||||
wname = arm.utils.safestr(world.name)
|
||||
wrd = bpy.data.worlds['Arm']
|
||||
wrd.world_defs = ''
|
||||
|
||||
def build_node_tree(world: bpy.types.World, frag: Shader, vert: Shader):
|
||||
"""Generates the shader code for the given world."""
|
||||
world_name = arm.utils.safestr(world.name)
|
||||
world.world_defs = ''
|
||||
rpdat = arm.utils.get_rp()
|
||||
|
||||
if callback is not None:
|
||||
|
@ -38,31 +39,31 @@ def build_node_tree(world):
|
|||
if not is_parsed:
|
||||
solid_mat = rpdat.arm_material_model == 'Solid'
|
||||
if rpdat.arm_irradiance and not solid_mat:
|
||||
wrd.world_defs += '_Irr'
|
||||
world.world_defs += '_Irr'
|
||||
c = world.color
|
||||
world.arm_envtex_color = [c[0], c[1], c[2], 1.0]
|
||||
world.arm_envtex_strength = 1.0
|
||||
|
||||
# Clear to color if no texture or sky is provided
|
||||
if '_EnvSky' not in wrd.world_defs and '_EnvTex' not in wrd.world_defs:
|
||||
if '_EnvImg' not in wrd.world_defs:
|
||||
wrd.world_defs += '_EnvCol'
|
||||
if '_EnvSky' not in world.world_defs and '_EnvTex' not in world.world_defs:
|
||||
if '_EnvImg' not in world.world_defs:
|
||||
world.world_defs += '_EnvCol'
|
||||
# Irradiance json file name
|
||||
world.arm_envtex_name = wname
|
||||
world.arm_envtex_irr_name = wname
|
||||
write_probes.write_color_irradiance(wname, world.arm_envtex_color)
|
||||
world.arm_envtex_name = world_name
|
||||
world.arm_envtex_irr_name = world_name
|
||||
write_probes.write_color_irradiance(world_name, world.arm_envtex_color)
|
||||
|
||||
# film_transparent
|
||||
if bpy.context.scene is not None and hasattr(bpy.context.scene.render, 'film_transparent') and bpy.context.scene.render.film_transparent:
|
||||
wrd.world_defs += '_EnvTransp'
|
||||
wrd.world_defs += '_EnvCol'
|
||||
world.world_defs += '_EnvTransp'
|
||||
world.world_defs += '_EnvCol'
|
||||
|
||||
# Clouds enabled
|
||||
if rpdat.arm_clouds:
|
||||
wrd.world_defs += '_EnvClouds'
|
||||
world.world_defs += '_EnvClouds'
|
||||
|
||||
if '_EnvSky' in wrd.world_defs or '_EnvTex' in wrd.world_defs or '_EnvImg' in wrd.world_defs or '_EnvClouds' in wrd.world_defs:
|
||||
wrd.world_defs += '_EnvStr'
|
||||
if '_EnvSky' in world.world_defs or '_EnvTex' in world.world_defs or '_EnvImg' in world.world_defs or '_EnvClouds' in world.world_defs:
|
||||
world.world_defs += '_EnvStr'
|
||||
|
||||
def parse_world_output(world, node):
|
||||
if node.inputs[0].is_linked:
|
||||
|
@ -165,10 +166,10 @@ def parse_color(world, node):
|
|||
world.arm_envtex_num_mips = mip_count
|
||||
|
||||
# Append envtex define
|
||||
wrd.world_defs += '_EnvTex'
|
||||
world.world_defs += '_EnvTex'
|
||||
# Append LDR define
|
||||
if disable_hdr:
|
||||
wrd.world_defs += '_EnvLDR'
|
||||
world.world_defs += '_EnvLDR'
|
||||
# Append radiance define
|
||||
if rpdat.arm_irradiance and rpdat.arm_radiance and not mobile_mat:
|
||||
wrd.world_defs += '_Rad'
|
||||
|
@ -201,8 +202,8 @@ def parse_color(world, node):
|
|||
elif node.type == 'TEX_SKY':
|
||||
# Match to cycles
|
||||
world.arm_envtex_strength *= 0.1
|
||||
wrd.world_defs += '_EnvSky'
|
||||
|
||||
world.world_defs += '_EnvSky'
|
||||
assets.add_khafile_def('arm_hosek')
|
||||
|
||||
world.arm_envtex_sun_direction = [node.sun_direction[0], node.sun_direction[1], node.sun_direction[2]]
|
||||
|
|
|
@ -269,6 +269,30 @@ def init_properties():
|
|||
bpy.types.World.arm_wasm_list = CollectionProperty(type=bpy.types.PropertyGroup)
|
||||
bpy.types.World.world_defs = StringProperty(name="World Shader Defs", default='')
|
||||
bpy.types.World.compo_defs = StringProperty(name="Compositor Shader Defs", default='')
|
||||
|
||||
bpy.types.World.arm_use_fog = BoolProperty(name="Volumetric Fog", default=False, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_fog_color = FloatVectorProperty(name="Color", size=3, subtype='COLOR', default=[0.5, 0.6, 0.7], min=0, max=1, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_fog_amounta = FloatProperty(name="Amount A", default=0.25, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_fog_amountb = FloatProperty(name="Amount B", default=0.5, update=assets.invalidate_shader_cache)
|
||||
|
||||
bpy.types.World.arm_use_clouds = BoolProperty(name="Clouds", default=False, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_clouds_lower = FloatProperty(name="Lower", default=1.0, min=0.1, max=10.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_clouds_upper = FloatProperty(name="Upper", default=1.0, min=0.1, max=10.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_clouds_wind = FloatVectorProperty(name="Wind", default=[1.0, 0.0], size=2, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_clouds_secondary = FloatProperty(name="Secondary", default=1.0, min=0.1, max=10.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_clouds_precipitation = FloatProperty(name="Precipitation", default=1.0, min=0.1, max=10.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_clouds_steps = IntProperty(name="Steps", default=24, min=1, max=240, update=assets.invalidate_shader_cache)
|
||||
|
||||
bpy.types.World.arm_use_water = BoolProperty(name="Water", description="Water surface pass", default=False, update=props_renderpath.update_renderpath)
|
||||
bpy.types.World.arm_water_color = FloatVectorProperty(name="Color", size=3, default=[1, 1, 1], subtype='COLOR', min=0, max=1, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_water_level = FloatProperty(name="Level", default=0.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_water_displace = FloatProperty(name="Displace", default=1.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_water_speed = FloatProperty(name="Speed", default=1.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_water_freq = FloatProperty(name="Freq", default=1.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_water_density = FloatProperty(name="Density", default=1.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_water_refract = FloatProperty(name="Refract", default=1.0, update=assets.invalidate_shader_cache)
|
||||
bpy.types.World.arm_water_reflect = FloatProperty(name="Reflect", default=1.0, update=assets.invalidate_shader_cache)
|
||||
|
||||
bpy.types.Material.export_uvs = BoolProperty(name="Export UVs", default=False)
|
||||
bpy.types.Material.export_vcols = BoolProperty(name="Export VCols", default=False)
|
||||
bpy.types.Material.export_tangents = BoolProperty(name="Export Tangents", default=False)
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
import bpy
|
||||
import webbrowser
|
||||
import os
|
||||
from bpy.types import Menu, Panel, UIList
|
||||
from bpy.props import *
|
||||
import arm.utils
|
||||
import arm.make as make
|
||||
import arm.make_state as state
|
||||
|
||||
import bpy
|
||||
|
||||
import arm.api
|
||||
import arm.assets as assets
|
||||
import arm.log as log
|
||||
import arm.proxy
|
||||
import arm.api
|
||||
import arm.make as make
|
||||
import arm.make_state as state
|
||||
import arm.props as props
|
||||
import arm.props_properties
|
||||
import arm.proxy
|
||||
import arm.utils
|
||||
|
||||
# Menu in object region
|
||||
class ARM_PT_ObjectPropsPanel(bpy.types.Panel):
|
||||
|
@ -145,6 +145,49 @@ class ARM_PT_DataPropsPanel(bpy.types.Panel):
|
|||
layout.prop(obj.data, 'arm_autobake')
|
||||
pass
|
||||
|
||||
class ARM_PT_WorldPropsPanel(bpy.types.Panel):
|
||||
bl_label = "Armory World Properties"
|
||||
bl_space_type = "PROPERTIES"
|
||||
bl_region_type = "WINDOW"
|
||||
bl_context = "world"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
world = context.world
|
||||
if world is None:
|
||||
return
|
||||
|
||||
layout.prop(world, 'arm_use_fog')
|
||||
col = layout.column(align=True)
|
||||
col.enabled = world.arm_use_fog
|
||||
col.prop(world, 'arm_fog_color')
|
||||
col.prop(world, 'arm_fog_amounta')
|
||||
col.prop(world, 'arm_fog_amountb')
|
||||
|
||||
layout.prop(world, 'arm_use_clouds')
|
||||
col = layout.column(align=True)
|
||||
col.enabled = world.arm_use_clouds
|
||||
col.prop(world, 'arm_clouds_lower')
|
||||
col.prop(world, 'arm_clouds_upper')
|
||||
col.prop(world, 'arm_clouds_precipitation')
|
||||
col.prop(world, 'arm_clouds_secondary')
|
||||
col.prop(world, 'arm_clouds_wind')
|
||||
col.prop(world, 'arm_clouds_steps')
|
||||
|
||||
layout.prop(world, "arm_use_water")
|
||||
col = layout.column(align=True)
|
||||
col.enabled = world.arm_use_water
|
||||
col.prop(world, 'arm_water_level')
|
||||
col.prop(world, 'arm_water_density')
|
||||
col.prop(world, 'arm_water_displace')
|
||||
col.prop(world, 'arm_water_speed')
|
||||
col.prop(world, 'arm_water_freq')
|
||||
col.prop(world, 'arm_water_refract')
|
||||
col.prop(world, 'arm_water_reflect')
|
||||
col.prop(world, 'arm_water_color')
|
||||
|
||||
class ARM_PT_ScenePropsPanel(bpy.types.Panel):
|
||||
bl_label = "Armory Props"
|
||||
bl_space_type = "PROPERTIES"
|
||||
|
@ -826,25 +869,7 @@ class ARM_PT_RenderPathWorldPanel(bpy.types.Panel):
|
|||
colb.enabled = rpdat.arm_radiance
|
||||
colb.prop(rpdat, 'arm_radiance_size')
|
||||
layout.prop(rpdat, 'arm_clouds')
|
||||
col = layout.column()
|
||||
col.enabled = rpdat.arm_clouds
|
||||
col.prop(rpdat, 'arm_clouds_lower')
|
||||
col.prop(rpdat, 'arm_clouds_upper')
|
||||
col.prop(rpdat, 'arm_clouds_precipitation')
|
||||
col.prop(rpdat, 'arm_clouds_secondary')
|
||||
col.prop(rpdat, 'arm_clouds_wind')
|
||||
col.prop(rpdat, 'arm_clouds_steps')
|
||||
layout.prop(rpdat, "rp_water")
|
||||
col = layout.column()
|
||||
col.enabled = rpdat.rp_water
|
||||
col.prop(rpdat, 'arm_water_level')
|
||||
col.prop(rpdat, 'arm_water_density')
|
||||
col.prop(rpdat, 'arm_water_displace')
|
||||
col.prop(rpdat, 'arm_water_speed')
|
||||
col.prop(rpdat, 'arm_water_freq')
|
||||
col.prop(rpdat, 'arm_water_refract')
|
||||
col.prop(rpdat, 'arm_water_reflect')
|
||||
col.prop(rpdat, 'arm_water_color')
|
||||
|
||||
class ARM_PT_RenderPathPostProcessPanel(bpy.types.Panel):
|
||||
bl_label = "Post Process"
|
||||
|
@ -978,11 +1003,6 @@ class ARM_PT_RenderPathCompositorPanel(bpy.types.Panel):
|
|||
col.enabled = rpdat.arm_grain
|
||||
col.prop(rpdat, 'arm_grain_strength')
|
||||
layout.prop(rpdat, 'arm_fog')
|
||||
col = layout.column()
|
||||
col.enabled = rpdat.arm_fog
|
||||
col.prop(rpdat, 'arm_fog_color')
|
||||
col.prop(rpdat, 'arm_fog_amounta')
|
||||
col.prop(rpdat, 'arm_fog_amountb')
|
||||
layout.separator()
|
||||
layout.prop(rpdat, "rp_autoexposure")
|
||||
col = layout.column()
|
||||
|
@ -1433,6 +1453,7 @@ def register():
|
|||
bpy.utils.register_class(ARM_PT_PhysicsPropsPanel)
|
||||
bpy.utils.register_class(ARM_PT_DataPropsPanel)
|
||||
bpy.utils.register_class(ARM_PT_ScenePropsPanel)
|
||||
bpy.utils.register_class(ARM_PT_WorldPropsPanel)
|
||||
bpy.utils.register_class(InvalidateCacheButton)
|
||||
bpy.utils.register_class(InvalidateMaterialCacheButton)
|
||||
bpy.utils.register_class(ARM_PT_MaterialPropsPanel)
|
||||
|
@ -1482,6 +1503,7 @@ def unregister():
|
|||
bpy.utils.unregister_class(ARM_PT_ParticlesPropsPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_PhysicsPropsPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_DataPropsPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_WorldPropsPanel)
|
||||
bpy.utils.unregister_class(ARM_PT_ScenePropsPanel)
|
||||
bpy.utils.unregister_class(InvalidateCacheButton)
|
||||
bpy.utils.unregister_class(InvalidateMaterialCacheButton)
|
||||
|
|
Loading…
Reference in a new issue