coloured cartoon inking

This commit is contained in:
rdb 2011-12-27 09:48:27 +00:00
parent 6b3c53e115
commit 306d6f993a

View File

@ -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):