Update Files

This commit is contained in:
2025-01-22 16:18:30 +01:00
parent ed4603cf95
commit a36294b518
16718 changed files with 2960346 additions and 0 deletions

View File

@ -0,0 +1,17 @@
from lnx.logicnode.lnx_nodes import *
class ColorgradingGetGlobalNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingGetGlobalNode'
bl_label = 'Colorgrading Get Global'
lnx_section = 'colorgrading'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'Whitebalance')
self.add_output('LnxVectorSocket', 'Tint')
self.add_output('LnxVectorSocket', 'Saturation')
self.add_output('LnxVectorSocket', 'Contrast')
self.add_output('LnxVectorSocket', 'Gamma')
self.add_output('LnxVectorSocket', 'Gain')
self.add_output('LnxVectorSocket', 'Offset')

View File

@ -0,0 +1,16 @@
from lnx.logicnode.lnx_nodes import *
class ColorgradingGetHighlightNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingGetHighlightNode'
bl_label = 'Colorgrading Get Highlight'
lnx_section = 'colorgrading'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'HightlightMin')
self.add_output('LnxVectorSocket', 'Saturation')
self.add_output('LnxVectorSocket', 'Contrast')
self.add_output('LnxVectorSocket', 'Gamma')
self.add_output('LnxVectorSocket', 'Gain')
self.add_output('LnxVectorSocket', 'Offset')

View File

@ -0,0 +1,15 @@
from lnx.logicnode.lnx_nodes import *
class ColorgradingGetMidtoneNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingGetMidtoneNode'
bl_label = 'Colorgrading Get Midtone'
lnx_section = 'colorgrading'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxVectorSocket', 'Saturation')
self.add_output('LnxVectorSocket', 'Contrast')
self.add_output('LnxVectorSocket', 'Gamma')
self.add_output('LnxVectorSocket', 'Gain')
self.add_output('LnxVectorSocket', 'Offset')

View File

@ -0,0 +1,16 @@
from lnx.logicnode.lnx_nodes import *
class ColorgradingGetShadowNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingGetShadowNode'
bl_label = 'Colorgrading Get Shadow'
lnx_section = 'colorgrading'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'ShadowMax')
self.add_output('LnxVectorSocket', 'Saturation')
self.add_output('LnxVectorSocket', 'Contrast')
self.add_output('LnxVectorSocket', 'Gamma')
self.add_output('LnxVectorSocket', 'Gain')
self.add_output('LnxVectorSocket', 'Offset')

View File

@ -0,0 +1,75 @@
import bpy
from lnx.logicnode.lnx_nodes import *
def update_node(self, context):
#Clean all nodes
while len(self.inputs) > 1:
self.inputs.remove(self.inputs[-1])
if (self.property0 == 'Uniform'):
self.draw_nodes_uniform(context)
elif (self.property0 == 'RGB'):
self.draw_nodes_rgb(context)
else:
self.draw_nodes_colorwheel(context)
def set_data(self, context):
abspath = bpy.path.abspath(self.filepath)
abspath = abspath.replace("\\","\\\\")
with open(abspath, 'r') as myfile:
data = myfile.read().replace('\n', '').replace('"','')
self.property1 = data
class ColorgradingSetGlobalNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingSetGlobalNode'
bl_label = 'Colorgrading Set Global'
lnx_section = 'colorgrading'
lnx_version = 1
# TODO: RRESET FILE OPTION FOR THE BELOW
property0 : HaxeEnumProperty(
'property0',
items = [('RGB', 'RGB', 'RGB'),
('Uniform', 'Uniform', 'Uniform')],
name='Mode', default='Uniform', update=update_node)
property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="")
filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data)
def draw_nodes_uniform(self, context):
self.add_input('LnxFloatSocket', 'Whitebalance', default_value=6500.0)
self.add_input('LnxColorSocket', 'Tint', default_value=[1.0, 1.0, 1.0, 1.0])
self.add_input('LnxFloatSocket', 'Saturation', default_value=1)
self.add_input('LnxFloatSocket', 'Contrast', default_value=1)
self.add_input('LnxFloatSocket', 'Gamma', default_value=1)
self.add_input('LnxFloatSocket', 'Gain', default_value=1)
self.add_input('LnxFloatSocket', 'Offset', default_value=1)
def draw_nodes_rgb(self, context):
self.add_input('LnxFloatSocket', 'Whitebalance', default_value=6500.0)
self.add_input('LnxVectorSocket', 'Tint', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Saturation', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Contrast', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gamma', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gain', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Offset', default_value=[1,1,1])
def draw_nodes_colorwheel(self, context):
pass
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_output('LnxNodeSocketAction', 'Out')
self.draw_nodes_uniform(context)
def draw_buttons(self, context, layout):
layout.label(text="Select value mode")
layout.prop(self, 'property0')
if (self.property0 == 'Preset File'):
layout.prop(self, 'filepath')
layout.prop(self, 'property1')

View File

@ -0,0 +1,73 @@
import bpy
from lnx.logicnode.lnx_nodes import *
def update_node(self, context):
#Clean all nodes
while len(self.inputs) > 1:
self.inputs.remove(self.inputs[-1])
if (self.property0 == 'Uniform'):
self.draw_nodes_uniform(context)
elif (self.property0 == 'RGB'):
self.draw_nodes_rgb(context)
else:
self.draw_nodes_colorwheel(context)
def set_data(self, context):
abspath = bpy.path.abspath(self.filepath)
abspath = abspath.replace("\\","\\\\")
with open(abspath, 'r') as myfile:
data = myfile.read().replace('\n', '').replace('"','')
self.property1 = data
class ColorgradingSetHighlightNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingSetHighlightNode'
bl_label = 'Colorgrading Set Highlight'
lnx_section = 'colorgrading'
lnx_version = 1
# TODO: RRESET FILE OPTION FOR THE BELOW
property0: HaxeEnumProperty(
'property0',
items = [('RGB', 'RGB', 'RGB'),
('Uniform', 'Uniform', 'Uniform')],
name='Mode', default='Uniform', update=update_node)
property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="")
filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data)
def draw_nodes_uniform(self, context):
self.add_input('LnxFloatSocket', 'HighlightMin', default_value=0)
self.add_input('LnxFloatSocket', 'Saturation', default_value=1)
self.add_input('LnxFloatSocket', 'Contrast', default_value=1)
self.add_input('LnxFloatSocket', 'Gamma', default_value=1)
self.add_input('LnxFloatSocket', 'Gain', default_value=1)
self.add_input('LnxFloatSocket', 'Offset', default_value=1)
def draw_nodes_rgb(self, context):
self.add_input('LnxFloatSocket', 'HighlightMin', default_value=0)
self.add_input('LnxVectorSocket', 'Saturation', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Contrast', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gamma', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gain', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Offset', default_value=[1,1,1])
def draw_nodes_colorwheel(self, context):
pass
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_output('LnxNodeSocketAction', 'Out')
self.draw_nodes_uniform(context)
def draw_buttons(self, context, layout):
layout.label(text="Select value mode")
layout.prop(self, 'property0')
if (self.property0 == 'Preset File'):
layout.prop(self, 'filepath')
layout.prop(self, 'property1')

View File

@ -0,0 +1,72 @@
import bpy
from lnx.logicnode.lnx_nodes import *
def update_node(self, context):
#Clean all nodes
while len(self.inputs) > 1:
self.inputs.remove(self.inputs[-1])
if (self.property0 == 'Uniform'):
self.draw_nodes_uniform(context)
elif (self.property0 == 'RGB'):
self.draw_nodes_rgb(context)
else:
self.draw_nodes_colorwheel(context)
def set_data(self, context):
abspath = bpy.path.abspath(self.filepath)
abspath = abspath.replace("\\","\\\\")
with open(abspath, 'r') as myfile:
data = myfile.read().replace('\n', '').replace('"','')
self.property1 = data
class ColorgradingSetMidtoneNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingSetMidtoneNode'
bl_label = 'Colorgrading Set Midtone'
lnx_section = 'colorgrading'
lnx_version = 1
# TODO: RRESET FILE OPTION FOR THE BELOW
property0: HaxeEnumProperty(
'property0',
items = [('RGB', 'RGB', 'RGB'),
('Uniform', 'Uniform', 'Uniform')],
name='Mode', default='Uniform', update=update_node)
property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="")
filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data)
def draw_nodes_uniform(self, context):
self.add_input('LnxFloatSocket', 'Saturation', default_value=1)
self.add_input('LnxFloatSocket', 'Contrast', default_value=1)
self.add_input('LnxFloatSocket', 'Gamma', default_value=1)
self.add_input('LnxFloatSocket', 'Gain', default_value=1)
self.add_input('LnxFloatSocket', 'Offset', default_value=1)
def draw_nodes_rgb(self, context):
self.add_input('LnxVectorSocket', 'Tint', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Saturation', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Contrast', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gamma', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gain', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Offset', default_value=[1,1,1])
def draw_nodes_colorwheel(self, context):
pass
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_output('LnxNodeSocketAction', 'Out')
self.draw_nodes_uniform(context)
def draw_buttons(self, context, layout):
layout.label(text="Select value mode")
layout.prop(self, 'property0')
if (self.property0 == 'Preset File'):
layout.prop(self, 'filepath')
layout.prop(self, 'property1')

View File

@ -0,0 +1,73 @@
import bpy
from lnx.logicnode.lnx_nodes import *
def update_node(self, context):
#Clean all nodes
while len(self.inputs) > 1:
self.inputs.remove(self.inputs[-1])
if (self.property0 == 'Uniform'):
self.draw_nodes_uniform(context)
elif (self.property0 == 'RGB'):
self.draw_nodes_rgb(context)
else:
self.draw_nodes_colorwheel(context)
def set_data(self, context):
abspath = bpy.path.abspath(self.filepath)
abspath = abspath.replace("\\","\\\\")
with open(abspath, 'r') as myfile:
data = myfile.read().replace('\n', '').replace('"','')
self.property1 = data
class ColorgradingSetShadowNode(LnxLogicTreeNode):
"""TO DO."""
bl_idname = 'LNColorgradingSetShadowNode'
bl_label = 'Colorgrading Set Shadow'
lnx_section = 'colorgrading'
lnx_version = 1
# TODO: RRESET FILE OPTION FOR THE BELOW
property0: HaxeEnumProperty(
'property0',
items = [('RGB', 'RGB', 'RGB'),
('Uniform', 'Uniform', 'Uniform')],
name='Mode', default='Uniform', update=update_node)
property1 : HaxeStringProperty('property1', name="Loaded Data", description="Loaded data - Just ignore", default="")
filepath : StringProperty(name="Preset File", description="Postprocess colorgrading preset file", default="", subtype="FILE_PATH", update=set_data)
def draw_nodes_uniform(self, context):
self.add_input('LnxFloatSocket', 'ShadowMax', default_value=1)
self.add_input('LnxFloatSocket', 'Saturation', default_value=1)
self.add_input('LnxFloatSocket', 'Contrast', default_value=1)
self.add_input('LnxFloatSocket', 'Gamma', default_value=1)
self.add_input('LnxFloatSocket', 'Gain', default_value=1)
self.add_input('LnxFloatSocket', 'Offset', default_value=1)
def draw_nodes_rgb(self, context):
self.add_input('LnxFloatSocket', 'ShadowMax', default_value=1)
self.add_input('LnxVectorSocket', 'Saturation', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Contrast', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gamma', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Gain', default_value=[1,1,1])
self.add_input('LnxVectorSocket', 'Offset', default_value=[1,1,1])
def draw_nodes_colorwheel(self, context):
pass
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_output('LnxNodeSocketAction', 'Out')
self.draw_nodes_uniform(context)
def draw_buttons(self, context, layout):
layout.label(text="Select value mode")
layout.prop(self, 'property0')
if (self.property0 == 'Preset File'):
layout.prop(self, 'filepath')
layout.prop(self, 'property1')

View File

@ -0,0 +1,24 @@
from lnx.logicnode.lnx_nodes import *
class BloomGetNode(LnxLogicTreeNode):
"""Return the current bloom post-processing settings. This node
requires `Leenkx Render Path > Renderer > Realtime postprocess`
to be enabled in order to work.
"""
bl_idname = 'LNBloomGetNode'
bl_label = 'Get Bloom Settings'
lnx_version = 2
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'Threshold')
self.add_output('LnxFloatSocket', 'Knee')
self.add_output('LnxFloatSocket', 'Strength')
self.add_output('LnxFloatSocket', 'Radius')
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
return NodeReplacement(
'LNBloomGetNode', 1,
'LNBloomGetNode', 2,
{}, {0: 0, 1: 2, 2: 3}
)

View File

@ -0,0 +1,11 @@
from lnx.logicnode.lnx_nodes import *
class ChromaticAberrationGetNode(LnxLogicTreeNode):
"""Returns the chromatic aberration post-processing settings."""
bl_idname = 'LNChromaticAberrationGetNode'
bl_label = 'Get CA Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'Strength')
self.add_output('LnxFloatSocket', 'Samples')

View File

@ -0,0 +1,29 @@
from lnx.logicnode.lnx_nodes import *
class CameraGetNode(LnxLogicTreeNode):
"""Returns the post-processing effects of a camera."""
bl_idname = 'LNCameraGetNode'
bl_label = 'Get Camera Post Process'
lnx_version = 4
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'F-Stop')#0
self.add_output('LnxFloatSocket', 'Shutter Time')#1
self.add_output('LnxFloatSocket', 'ISO')#2
self.add_output('LnxFloatSocket', 'Exposure Compensation')#3
self.add_output('LnxFloatSocket', 'Fisheye Distortion')#4
self.add_output('LnxBoolSocket', 'Auto Focus')#5
self.add_output('LnxFloatSocket', 'DOF Distance')#6
self.add_output('LnxFloatSocket', 'DOF Length')#7
self.add_output('LnxFloatSocket', 'DOF F-Stop')#8
self.add_output('LnxBoolSocket', 'Tonemapping')#9
self.add_output('LnxFloatSocket', 'Distort')#10
self.add_output('LnxFloatSocket', 'Film Grain')#11
self.add_output('LnxFloatSocket', 'Sharpen')#12
self.add_output('LnxFloatSocket', 'Vignette')#13
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in (0, 3):
raise LookupError()
return NodeReplacement.Identity(self)

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class LenstextureGetNode(LnxLogicTreeNode):
"""Returns the lens texture settings."""
bl_idname = 'LNLenstextureGetNode'
bl_label = 'Get Lenstexture Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'Center Min Clip')
self.add_output('LnxFloatSocket', 'Center Max Clip')
self.add_output('LnxFloatSocket', 'Luminance Min')
self.add_output('LnxFloatSocket', 'Luminance Max')
self.add_output('LnxFloatSocket', 'Brightness Exponent')

View File

@ -0,0 +1,11 @@
from lnx.logicnode.lnx_nodes import *
class LetterboxGetNode(LnxLogicTreeNode):
"""Returns the letterbox post-processing settings."""
bl_idname = 'LNLetterboxGetNode'
bl_label = 'Get Letterbox Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxColorSocket', 'Color')
self.add_output('LnxFloatSocket', 'Size')

View File

@ -0,0 +1,12 @@
from lnx.logicnode.lnx_nodes import *
class SSAOGetNode(LnxLogicTreeNode):
"""Returns the SSAO post-processing settings."""
bl_idname = 'LNSSAOGetNode'
bl_label = 'Get SSAO Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'Radius')
self.add_output('LnxFloatSocket', 'Strength')
self.add_output('LnxFloatSocket', 'Max Steps')

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class SSRGetNode(LnxLogicTreeNode):
"""Returns the SSR post-processing settings."""
bl_idname = 'LNSSRGetNode'
bl_label = 'Get SSR Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_output('LnxFloatSocket', 'SSR Step')
self.add_output('LnxFloatSocket', 'SSR Step Min')
self.add_output('LnxFloatSocket', 'SSR Search')
self.add_output('LnxFloatSocket', 'SSR Falloff')
self.add_output('LnxFloatSocket', 'SSR Jitter')

View File

@ -0,0 +1,17 @@
from lnx.logicnode.lnx_nodes import *
class LenstextureSetNode(LnxLogicTreeNode):
"""Set the lens texture settings."""
bl_idname = 'LNLenstextureSetNode'
bl_label = 'Set Lenstexture'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxFloatSocket', 'Center Min Clip', default_value=0.1)
self.add_input('LnxFloatSocket', 'Center Max Clip', default_value=0.5)
self.add_input('LnxFloatSocket', 'Luminance Min', default_value=0.10)
self.add_input('LnxFloatSocket', 'Luminance Max', default_value=2.50)
self.add_input('LnxFloatSocket', 'Brightness Exponent', default_value=2.0)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,34 @@
from lnx.logicnode.lnx_nodes import *
import lnx.node_utils
class BloomSetNode(LnxLogicTreeNode):
"""Set the bloom post-processing settings. This node
requires `Leenkx Render Path > Renderer > Realtime postprocess`
to be enabled in order to work.
"""
bl_idname = 'LNBloomSetNode'
bl_label = 'Set Bloom Settings'
lnx_version = 2
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxFloatSocket', 'Threshold', default_value=0.8)
self.add_input('LnxFloatSocket', 'Knee', default_value=0.5)
self.add_input('LnxFloatSocket', 'Strength', default_value=0.05)
self.add_input('LnxFloatSocket', 'Radius', default_value=6.5)
self.add_output('LnxNodeSocketAction', 'Out')
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
return NodeReplacement(
'LNBloomSetNode', 1,
'LNBloomSetNode', 2,
{0: 0, 1: 1, 2: 3, 3: 4}, {0: 0},
None,
{
1: lnx.node_utils.get_socket_default(self.inputs[1]),
3: lnx.node_utils.get_socket_default(self.inputs[2]),
4: lnx.node_utils.get_socket_default(self.inputs[3]),
}
)

View File

@ -0,0 +1,14 @@
from lnx.logicnode.lnx_nodes import *
class ChromaticAberrationSetNode(LnxLogicTreeNode):
"""Set the chromatic aberration post-processing settings."""
bl_idname = 'LNChromaticAberrationSetNode'
bl_label = 'Set CA Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxFloatSocket', 'Strength', default_value=2.0)
self.add_input('LnxIntSocket', 'Samples', default_value=32)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,39 @@
from lnx.logicnode.lnx_nodes import *
class CameraSetNode(LnxLogicTreeNode):
"""Set the post-processing effects of a camera."""
bl_idname = 'LNCameraSetNode'
bl_label = 'Set Camera Post Process'
lnx_version = 4
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxFloatSocket', 'F-stop', default_value=1.0)#0
self.add_input('LnxFloatSocket', 'Shutter Time', default_value=2.8333)#1
self.add_input('LnxFloatSocket', 'ISO', default_value=100.0)#2
self.add_input('LnxFloatSocket', 'Exposure Compensation', default_value=0.0)#3
self.add_input('LnxFloatSocket', 'Fisheye Distortion', default_value=0.01)#4
self.add_input('LnxBoolSocket', 'Auto Focus', default_value=True)#5
self.add_input('LnxFloatSocket', 'DoF Distance', default_value=10.0)#6
self.add_input('LnxFloatSocket', 'DoF Length', default_value=160.0)#7
self.add_input('LnxFloatSocket', 'DoF F-Stop', default_value=128.0)#8
self.add_input('LnxBoolSocket', 'Tonemapping', default_value=False)#9
self.add_input('LnxFloatSocket', 'Distort', default_value=2.0)#10
self.add_input('LnxFloatSocket', 'Film Grain', default_value=2.0)#11
self.add_input('LnxFloatSocket', 'Sharpen', default_value=0.25)#12
self.add_input('LnxFloatSocket', 'Vignette', default_value=0.7)#13
self.add_output('LnxNodeSocketAction', 'Out')
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in range(0, 4):
raise LookupError()
elif self.lnx_version == 1:
newnode = node_tree.nodes.new('LNCameraSetNode')
for link in self.inputs[10].links:
node_tree.links.new(newnode.inputs[10], link.to_socket)
return newnode
else:
return NodeReplacement.Identity(self)

View File

@ -0,0 +1,20 @@
from lnx.logicnode.lnx_nodes import *
class LetterboxSetNode(LnxLogicTreeNode):
"""Set the letterbox post-processing settings."""
bl_idname = 'LNLetterboxSetNode'
bl_label = 'Set Letterbox Settings'
lnx_version = 2
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxColorSocket', 'Color', default_value=[0.0, 0.0, 0.0, 1.0])
self.add_input('LnxFloatSocket', 'Size', default_value=0.1)
self.add_output('LnxNodeSocketAction', 'Out')
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in (0, 1):
raise LookupError()
return NodeReplacement.Identity(self)

View File

@ -0,0 +1,15 @@
from lnx.logicnode.lnx_nodes import *
class SSAOSetNode(LnxLogicTreeNode):
"""Set the SSAO post-processing settings."""
bl_idname = 'LNSSAOSetNode'
bl_label = 'Set SSAO Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxFloatSocket', 'Radius', default_value=1.0)
self.add_input('LnxFloatSocket', 'Strength', default_value=5.0)
self.add_input('LnxIntSocket', 'Max Steps', default_value=8)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,17 @@
from lnx.logicnode.lnx_nodes import *
class SSRSetNode(LnxLogicTreeNode):
"""Set the SSR post-processing settings."""
bl_idname = 'LNSSRSetNode'
bl_label = 'Set SSR Settings'
lnx_version = 1
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxFloatSocket', 'SSR Step', default_value=0.04)
self.add_input('LnxFloatSocket', 'SSR Step Min', default_value=0.05)
self.add_input('LnxFloatSocket', 'SSR Search', default_value=5.0)
self.add_input('LnxFloatSocket', 'SSR Falloff', default_value=5.0)
self.add_input('LnxFloatSocket', 'SSR Jitter', default_value=0.6)
self.add_output('LnxNodeSocketAction', 'Out')

View File

@ -0,0 +1,4 @@
from lnx.logicnode.lnx_nodes import add_node_section
add_node_section(name='default', category='Postprocess')
add_node_section(name='colorgrading', category='Postprocess')