From a1577331fde908456453ae45686bdc8a0ec91369 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sat, 9 Jul 2016 21:41:02 -0400 Subject: [PATCH] Add "Cast RT Shadow" modifier --- korman/properties/modifiers/render.py | 40 +++++++++++++++++++++++++++ korman/ui/modifiers/render.py | 11 ++++++++ 2 files changed, 51 insertions(+) diff --git a/korman/properties/modifiers/render.py b/korman/properties/modifiers/render.py index ab235bf..97a7715 100644 --- a/korman/properties/modifiers/render.py +++ b/korman/properties/modifiers/render.py @@ -277,6 +277,46 @@ class PlasmaLightingMod(PlasmaModifierProperties): return False +class PlasmaShadowCasterMod(PlasmaModifierProperties): + pl_id = "rtshadow" + + bl_category = "Render" + bl_label = "Cast RT Shadow" + bl_description = "Cast runtime shadows" + + blur = IntProperty(name="Blur", + description="Blur factor for the shadow map", + min=0, max=100, default=0, + subtype="PERCENTAGE", options=set()) + boost = IntProperty(name="Boost", + description="Multiplies the shadow's power", + min=0, max=5000, default=100, + subtype="PERCENTAGE", options=set()) + falloff = IntProperty(name="Falloff", + description="Multiplier for each lamp's falloff value", + min=10, max=1000, default=100, + subtype="PERCENTAGE", options=set()) + + limit_resolution = BoolProperty(name="Limit Resolution", + description="Increase performance by halving the resolution of the shadow map", + default=False, + options=set()) + self_shadow = BoolProperty(name="Self Shadow", + description="Object can cast shadows on itself", + default=False, + options=set()) + + def export(self, exporter, bo, so): + caster = exporter.mgr.find_create_object(plShadowCaster, so=so, name=self.key_name) + caster.attenScale = self.falloff / 100.0 + caster.blurScale = self.blur / 100.0 + caster.boost = self.boost / 100.0 + if self.limit_resolution: + caster.castFlags |= plShadowCaster.kLimitRes + if self.self_shadow: + caster.castFlags |= plShadowCaster.kSelfShadow + + class PlasmaViewFaceMod(PlasmaModifierProperties): pl_id = "viewfacemod" diff --git a/korman/ui/modifiers/render.py b/korman/ui/modifiers/render.py index a4474c2..5020a54 100644 --- a/korman/ui/modifiers/render.py +++ b/korman/ui/modifiers/render.py @@ -100,6 +100,17 @@ def lightmap(modifier, layout, context): if tex.image.name == im_name: layout.template_preview(tex, show_buttons=False) +def rtshadow(modifier, layout, context): + split = layout.split() + col = split.column() + col.prop(modifier, "blur") + col.prop(modifier, "boost") + col.prop(modifier, "falloff") + + col = split.column() + col.prop(modifier, "limit_resolution") + col.prop(modifier, "self_shadow") + def viewfacemod(modifier, layout, context): layout.prop(modifier, "preset_options")