In terms of shading, the SVG WG seems to prefer mesh-gradients, though their
use as a declarative tool (sans package) seems a bit prohibitive.
Nevertheless, it will take some time for SVG 2.0 to be standardized and some
time after that for gradient meshes to be implemented in the browsers, and
in the meantime one has a pretty broad class of rich gradients available
through <replicate>. Here are some examples I cobbled together in less than
an hour this morning (unfortunately, the examples are using a different
version of the base code than the "trunk" since it looks like we broke
These examples are fairly simple, using <replicateModifier> to retrieve the
gradient applied to the rectangle and to change the colors in that gradient
as the gradient's footprint is changed.
Basically, replicateModifier is used to retrieve some of the modifiers of an
SVG object (these might, in theory, be gradients, clipPaths, masks, filters,
animations, patterns, or even replicates) and to modify those as the other
attributes of an object are also modified. *
My own sense is that replicate makes it easier for the author, working
without a tool, to design custom gradients, but I'd have to agree, that the
folks who have cobbled together examples for replicate have been more
worried with extending the concepts, building the code and making the
examples than with explaining how to do it. One of my students points out
that a political mistake we may have made was to display too broad a range
of its abilities, overwhelming, perhaps, folks who didn't have time to
consider the proposal seriously.
On the other hand, Inkscape and Illustrator give access to very rich,
customizable gradients - it is just that the code exported for such
gradients is not particularly accessible to a human who might later wish to
polish it, program with it, or make it accessible to those who, for whatever
reason, need access to that geometry, or to search engines of the future and
the like. The "semantics" of replicate, being based on the semantics of
animate makes more sense, at least to me.
In terms of the declarative randomness, I'm in general agreement. I think
fire, water, clouds, and even wood grain (see
-- in either Firefox or
Opera or IE/ASV) are perhaps easier with filters since feTurbulence does a
nice job of pseudo-randomness with "fuzzy" things.
When it comes to making crisp objects though, ( see for example,
) feTurbulence is a bit
hard to shape into things like grass or hair, and even though we could
distort it, post-hoc, by another feTurbulence using feDisplacement (as in
) so as to convey a bit of
wave or wind to the grain of the grass or hair, it is ultimately going to be
easier to just draw a hundred or so proto-hairs into a pattern space with
declarative randomness than to try to trick filters into giving us that
I rather get the sense that some are declaring (using non declarative
methods) that the golden age of declarative approaches to graphics is all in
the past and that all will be henceforth be done with script, CSS and
packages - a curious proposition since the packages have not yet been built!
While this may appeal to the community of non-authors, I'm not so sure
appeals to authors.
*It would be nice if <animateModifier> were included in SVG 2.0, since it is
a natural thing to want to do; I remembered to ask for <animatePath> to
allow more precise control over all attributes of an animated object, but
forgot to ask for the more obvious animateModifier.
On Behalf Of cremnosedum
Sent: Tuesday, November 29, 2011 1:00 PM
Subject: [svg-developers] Re: <replicate>
I'd like to use replicate for my web comic, where I'm trying to make things
look realistic in SVG. It would be very useful for things like realistically
shading complicated shapes. Unfortunately, my big problem so far is that I
haven't found a good explanation of how to use it. There are some examples
but I haven't had the time or patients to figure out how they work and how
to modify them for the space ship parts and things I need.
> I'm also interested in incorporating "declarative randomness" - if one
> to generate a few hundred objects into the DOM, why not have them be
I think this would be useful for drawing things like hair, grass, woodgrains
> Might anyone want to help contribute to such an open source project?
I would consider it.
Richard Pearman http://www.pixelpalaces.com/
The next stage in the evolution of web comics:
Read my Helium articles: http://www.helium.com/users/212199
South Alberta Cactus and succulent society:
[Non-text portions of this message have been removed]