On 9 Feb 2001, Jens Lautenbacher wrote:
> Here the question naturally arises: what kind of functions should be
> possible? Only transformations? Only some set of functions that are
> predefined in the core? Or could there be some possibility to handle
> user provided functions? How would these (if possible) be specified in
> a fileformat? or just LUTs that are used by functionality that is
> special to the object (e.g. for textures, there needs to be some
> special functionality on how to map the input state (mainly pressure I
> assume) to the final buffer returned. Here a LUT or a simply scalar
> function seems to be the way to go.
Those are good questions. A texture won't need to be modified by pressure
in most cases since pressure modifies the brush mask. However, if tilt
and/or stroke angle is available to the PaintObject, a texture
theoretically could be mathematically modified by bumpmapping it. The
stroke angle becomes the bumpmap light source azimuth and perhaps then the
resulting bumpmap is multiplied by the original texture. Then the
tilt can be used as a reinforcement. That way high points facing the
direction of the stroke get more deposited pigment.
The texture stuff probably wouldn't benefit from user functions. Having
one or two good built-in defaults ought to be good.
If user supplied functions were supported, it'd seem they would need to be
compiled if they work on pixels. If they are used for defining transform
matrices, then they could be interpreted in Scheme.
> Another thing that should be really well thought about is how far this
> abstraction is presented to the user. Having all of the paintobjects
> fulfill a generic interface w.r.t the paintcore it makes it possible
> to e.g. use a texture as a brush and vice versa. I would still
> strongly argue against presenting such a possibility to the user. From
> his/her point of view, a brush is NOT a pattern, nor a texture.
I'd agree with this. If for some odd reason a creative user wishes to
use a texture as a pattern, then he/she can save a copy as a
pattern. If there is one file format for patterns/brushes/texture/etc
they could even copy or soft link as needed.