Browse Source

coloured cartoon inking

rdb 14 years ago
parent
commit
306d6f993a
1 changed files with 10 additions and 5 deletions
  1. 10 5
      direct/src/filter/CommonFilters.py

+ 10 - 5
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_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)));
 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);
 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:
 class FilterConfig:
@@ -226,6 +226,7 @@ class CommonFilters:
                 text += "uniform sampler2D k_tx" + key + ",\n"
                 text += "uniform sampler2D k_tx" + key + ",\n"
             if (configuration.has_key("CartoonInk")):
             if (configuration.has_key("CartoonInk")):
                 text += "uniform float4 k_cartoonseparation,\n"
                 text += "uniform float4 k_cartoonseparation,\n"
+                text += "uniform float4 k_cartooncolor,\n"
             if (configuration.has_key("VolumetricLighting")):
             if (configuration.has_key("VolumetricLighting")):
                 text += "uniform float4 k_casterpos,\n"
                 text += "uniform float4 k_casterpos,\n"
                 text += "uniform float4 k_vlparams,\n"
                 text += "uniform float4 k_vlparams,\n"
@@ -271,8 +272,9 @@ class CommonFilters:
         
         
         if (changed == "CartoonInk") or fullrebuild:
         if (changed == "CartoonInk") or fullrebuild:
             if (configuration.has_key("CartoonInk")):
             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 (changed == "BlurSharpen") or fullrebuild:
             if (configuration.has_key("BlurSharpen")):
             if (configuration.has_key("BlurSharpen")):
@@ -314,9 +316,12 @@ class CommonFilters:
         if task != None:
         if task != None:
             return task.cont
             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)
         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")
         return self.reconfigure(fullrebuild, "CartoonInk")
 
 
     def delCartoonInk(self):
     def delCartoonInk(self):