diff --git a/direct/src/filter/CommonFilters.py b/direct/src/filter/CommonFilters.py index fc71d05abb..0500d53d59 100644 --- a/direct/src/filter/CommonFilters.py +++ b/direct/src/filter/CommonFilters.py @@ -36,7 +36,7 @@ float4 cartoon_c3 = tex2D(k_txaux, cartoon_p3.xy); float4 cartoon_mx = max(cartoon_c0,max(cartoon_c1,max(cartoon_c2,cartoon_c3))); float4 cartoon_mn = min(cartoon_c0,min(cartoon_c1,min(cartoon_c2,cartoon_c3))); float cartoon_thresh = saturate(dot(cartoon_mx - cartoon_mn, float4(3,3,0,0)) - 0.5); -o_color = lerp(o_color, float4(0,0,0,1), cartoon_thresh); +o_color = lerp(o_color, k_cartooncolor, cartoon_thresh); """ class FilterConfig: @@ -226,6 +226,7 @@ class CommonFilters: text += "uniform sampler2D k_tx" + key + ",\n" if (configuration.has_key("CartoonInk")): text += "uniform float4 k_cartoonseparation,\n" + text += "uniform float4 k_cartooncolor,\n" if (configuration.has_key("VolumetricLighting")): text += "uniform float4 k_casterpos,\n" text += "uniform float4 k_vlparams,\n" @@ -271,8 +272,9 @@ class CommonFilters: if (changed == "CartoonInk") or fullrebuild: if (configuration.has_key("CartoonInk")): - separation = configuration["CartoonInk"] - self.finalQuad.setShaderInput("cartoonseparation", Vec4(separation,0,separation,0)) + c = configuration["CartoonInk"] + self.finalQuad.setShaderInput("cartoonseparation", Vec4(c.separation, 0, c.separation, 0)) + self.finalQuad.setShaderInput("cartooncolor", c.color) if (changed == "BlurSharpen") or fullrebuild: if (configuration.has_key("BlurSharpen")): @@ -314,9 +316,12 @@ class CommonFilters: if task != None: return task.cont - def setCartoonInk(self, separation=1): + def setCartoonInk(self, separation=1, color=(0, 0, 0, 1)): fullrebuild = (self.configuration.has_key("CartoonInk") == False) - self.configuration["CartoonInk"] = separation + newconfig = FilterConfig() + newconfig.separation = separation + newconfig.color = color + self.configuration["CartoonInk"] = newconfig return self.reconfigure(fullrebuild, "CartoonInk") def delCartoonInk(self):