merge upstream

This commit is contained in:
2025-06-10 20:28:46 +00:00
16 changed files with 277 additions and 24 deletions

View File

@ -0,0 +1,23 @@
from lnx.logicnode.lnx_nodes import *
class SetMaterialTextureFilterNode(LnxLogicTreeNode):
"""Sets texture filter interpolation."""
bl_idname = 'LNSetMaterialTextureFilterNode'
bl_label = 'Set Object Material Texture Filter'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxNodeSocketObject', 'Object')
self.add_input('LnxDynamicSocket', 'Material')
self.add_input('LnxIntSocket', 'Slot')
self.add_input('LnxStringSocket', 'Node')
self.add_input('LnxIntSocket', 'Texture Filter')
self.add_output('LnxNodeSocketAction', 'Out')
def draw_buttons(self, context, layout):
layout.label(text='Tex Filter 0: Linear')
layout.label(text='Tex Filter 1: Closest')
layout.label(text='Tex Filter 2: Cubic')
layout.label(text='Tex Filter 3: Smart')

View File

@ -0,0 +1,12 @@
from lnx.logicnode.lnx_nodes import *
class ResolutionGetNode(LnxLogicTreeNode):
"""Returns the resolution parameters.
"""
bl_idname = 'LNResolutionGetNode'
bl_label = 'Get Resolution Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxIntSocket', 'Size')
self.add_output('LnxIntSocket', 'Filter')

View File

@ -0,0 +1,20 @@
from lnx.logicnode.lnx_nodes import *
class ResolutionSetNode(LnxLogicTreeNode):
"""Set the resolution post-processing settings.
Filter 0: Lineal 1: Closest
"""
bl_idname = 'LNResolutionSetNode'
bl_label = 'Set Resolution Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxIntSocket', 'Size', default_value=720)
self.add_input('LnxIntSocket', 'Filter', default_value=0)
self.add_output('LnxNodeSocketAction', 'Out')
def draw_buttons(self, context, layout):
layout.label(text="Type 0: Lineal")
layout.label(text="Type 1: Closest")

View File

@ -1,8 +1,8 @@
from lnx.logicnode.lnx_nodes import *
class GetWorldNode(LnxLogicTreeNode):
class GetWorldOrientationNode(LnxLogicTreeNode):
"""Returns the world orientation of the given object."""
bl_idname = 'LNGetWorldNode'
bl_idname = 'LNGetWorldOrientationNode'
bl_label = 'Get World Orientation'
lnx_section = 'rotation'
lnx_version = 1

View File

@ -0,0 +1,10 @@
from lnx.logicnode.lnx_nodes import *
class GetWorldNode(LnxLogicTreeNode):
"""Gets the World of the active scene."""
bl_idname = 'LNGetWorldNode'
bl_label = 'Get World'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxStringSocket', 'World')

View File

@ -0,0 +1,13 @@
from lnx.logicnode.lnx_nodes import *
class SetWorldNode(LnxLogicTreeNode):
"""Sets the World of the active scene."""
bl_idname = 'LNSetWorldNode'
bl_label = 'Set World'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxStringSocket', 'World')
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -47,11 +47,20 @@ def build():
with write_probes.setup_envmap_render():
for scene in bpy.data.scenes:
world = scene.world
#for scene in bpy.data.scenes:
for world in bpy.data.worlds:
#world = scene.world
# Only export worlds from enabled scenes and only once per world
if scene.lnx_export and world is not None and world not in worlds:
assigned = False;
for scene in bpy.data.scenes:
if scene.lnx_export and scene.world is not None:
if scene.world.name == world.name:
assigned = True;
break;
#if scene.lnx_export and world is not None and world not in worlds:
# Only export worlds from enabled scenes and with fake users
if (world.use_fake_user and world.name != 'Lnx') or assigned:
worlds.append(world)
world.lnx_envtex_name = ''

View File

@ -452,9 +452,10 @@ class LnxRPListItem(bpy.types.PropertyGroup):
lnx_ssrs: BoolProperty(name="SSRS", description="Screen-space ray-traced shadows", default=False, update=assets.invalidate_shader_cache)
lnx_micro_shadowing: BoolProperty(name="Micro Shadowing", description="Use the shaders' occlusion parameter to compute micro shadowing for the scene's sun lamp. This option is not available for render paths using mobile or solid material models", default=False, update=assets.invalidate_shader_cache)
lnx_texture_filter: EnumProperty(
items=[('Anisotropic', 'Anisotropic', 'Anisotropic'),
('Linear', 'Linear', 'Linear'),
items=[('Linear', 'Linear', 'Linear'),
('Point', 'Closest', 'Point'),
('Cubic', 'Cubic', 'Cubic'),
('Anisotropic', 'Smart', 'Anisotropic'),
('Manual', 'Manual', 'Manual')],
name="Texture Filtering", description="Set Manual to honor interpolation setting on Image Texture node", default='Anisotropic')
lnx_material_model: EnumProperty(