[comp.sys.amiga.advocacy] IDEA: Rendering utilities!...

Lee_Robert_Willis@cup.portal.com (03/22/91)

I was using ProWrite the other day, and wishing that it would import 
ProfessionalDraw files, when the following thought occurred to me:

What we (the Amiga community) need is class of programs that I term
"Renderers" (this has nothing to do with PIXAR's RenderMan).

A "Renderer" is a program which takes a graphic file, and creates 
an Image structure (Intuition bitmap) for a client application. 

When a client program wants to display an image, it starts up the
renderer (if its not already resident), and sends it a message 
which contains the filename of the image to render, the width, height,
and depth of the desired result, whether to scale or clip the image
if it doesn't fit perfectly, what kind of dithering (if any) to use,
etc.

The renderer reads the file, and creates an Intuition Image structure, 
which it returns to the Client application.  (It is the clients 
responsibility to deallocate the returned message)


                      Return_Address,
     ___________      filename,                _____________
    /           \     Rendering_parameters    /             \
   |   Client    | ------------------------> |               |
   | Application |                           |   Renderer    |
   |             | <------------------------ |               |
    \___________/        Image                \_____________/
                     

      Return_Address       ::= Message Port of client application
                                 which is expecting the image.
                                 
      filename             ::= file name of image to render.
      
      Rendering_Parameters ::= Width, Height, Depth, 
                               Colors, Dithering, etc.

Client applications would generally be programs which display images, 
but don't manipulate them.  e.g., Pictures in a word processor, or DTP
program,  Multimedia programs (AmigaVision).

The client would store reference to the image, and its renderer.  (Similar
to the way Project icon .info files store a reference to the icon's file
and default application) 

Some obvious Renderer candidates:

      IFF_ILBM.renderer
      IFF_DR2D.renderer
      ProDraw.renderer
      PostScript.renderer
      Sculpt3D.renderer
         etc.
      
The beauty of this concept is that it allows applications to be 
open-ended.  A word processor that supports the "Renderer" interface 
can potentially handle *any* graphic format!  The end result is the
same (an Image).  

Or imagine an AmigaVision flow (or CanDo application) which allows 
the user to browse the blueprint of a building.  The blueprint is
in some vector-drawing program format.  When the user clicks on 
zoom, pan, or scroll gadgets,  the renderer is called to re-render
the image at the new point of view.  At the click of another button,
a 3D modelling renderer creates a 3D image of the building at the
current location.

I know that with some applications this can sort-of be accomplished now
using AREXX.  e.g. run the graphic application using AREXX, save the image
to an IFF file, read in the IFF file in the client.  But I think the 
Renderer has the following advantages over AREXX:

   A renderer executable can be much smaller, because there's no 
   user-interface.  
   
   A renderer will be faster because there's no IFF formatting and
   parsing.  (and no disk I/O)
   
   Given that a standard interface/required functionality is defined,
   a renderer will be easier to use.  The user does not have to learn
   AREXX (I know its not hard, but I'm a programmer, and if you're reading
   this, so are you :-)  Remember that there are plenty-o-people who 
   can't program their VCR)  The user would merely have to type into
   a requester:
   
      Image File : My_Picture
      Renderer   : PostScript

   and if DefaultRenderer is a ToolType in the picture's icon, the
   user shouldn't even have to supply the Renderer!

   A renderer should be freely distributable.  (Just like there are
   freely distributable ILBM displayers, SMUS players, text readers)

So thats my idea.  Comments?

Lee      Lee_Robert_Willis@cup.portal.com

u3364521@ucsvc.ucs.unimelb.edu.au (Lou Cavallo) (03/22/91)

G'day,

In article <40434@cup.portal.com>, Lee_Robert_Willis@cup.portal.com writes:
> 
> I was using ProWrite the other day, and wishing that it would import 
> ProfessionalDraw files, when the following thought occurred to me:

  Yep, sigh, if the program hasn't got the option to do a thing then what
  can we do but ...

> What we (the Amiga community) need is class of programs that I term
> "Renderers" (this has nothing to do with PIXAR's RenderMan).
>
> A "Renderer" is a program which takes a graphic file, and creates 
> an Image structure (Intuition bitmap) for a client application. 

  The idea IMHO is a good one but if it is paraphased as building up new
  functionality into an application using modular s/w components one can
  see the idea is not new.

  However I think Lee is seeing the shape of the Amiga future here where
  he is asking for integrability of "snap in" s/w components for any s/w
  an Amiga user might purchase off the shelf (with respect to image ren-
  dering in this case).

> When a client program wants to display an image, it starts up the
> renderer (if its not already resident), and sends it a message 
> which contains the filename of the image to render, the width, height,
> and depth of the desired result, whether to scale or clip the image
> if it doesn't fit perfectly, what kind of dithering (if any) to use,
> etc.

  I'm going to go out on a limb here and suggest that some s/w (such as
  The Art Department/AdPro) already works in this modular way but not in
  a way (perhaps it does?) that address Lee's Renderer concept.

> The renderer reads the file, and creates an Intuition Image structure, 
> which it returns to the Client application.  (It is the clients 
> responsibility to deallocate the returned message)

> [... flow diagram and suggested messaging mechanism ...]

> Client applications would generally be programs which display images, 
> but don't manipulate them.  e.g., Pictures in a word processor, or DTP
> program,  Multimedia programs (AmigaVision).

  Why not manipulate the images with the Renderer?

> The client would store reference to the image, and its renderer.  (Similar
> to the way Project icon .info files store a reference to the icon's file
> and default application) 

  Kind of a HyperDocument idea eh? :-) {I can imagine the images "hotlinked"
  to a Renderer with simple drawing and text annotation abilities that allow
  images in a document to be touched up rather than separately in a painting
  or drawing program. (Lee suggested the same thing basically, I am just off
  on a tangent re: hotlinking a single image into 1 or more applications..)}

> Some obvious Renderer candidates:
> 
>       IFF_ILBM.renderer
>       IFF_DR2D.renderer
>       ProDraw.renderer
>       PostScript.renderer
>       Sculpt3D.renderer
>          etc.

  GIF.renderer, PICT.renderer, TIFF.renderer ... ?

> The beauty of this concept is that it allows applications to be 
> open-ended.  A word processor that supports the "Renderer" interface 
> can potentially handle *any* graphic format!  The end result is the
> same (an Image).  

  Yep ... and a happy user.

> [... AmigaVision/CanDo multimedia type examples ...]

> I know that with some applications this can sort-of be accomplished now
> using AREXX.  e.g. run the graphic application using AREXX, save the image
> to an IFF file, read in the IFF file in the client.  But I think the 
> Renderer has the following advantages over AREXX:
>
> [... I agree with all your suggested advantages but I'm cutting them ...]
> [... to trim this reply a little.                                    ...]

> A renderer should be freely distributable.  (Just like there are freely 
> distributable ILBM displayers, SMUS players, text readers)

  Yes.  I feel however that this style of integrability of s/w components
  has to have support from the major s/w producers within their products.

  Currently a s/w producer has a commercial edge if their s/w can import
  more types of objects than their competitors can and so ... one asks if
  this idea will obtain support from the big s/w producers when it is not
  in their *short term* interests to support it?

  Are other computer architectures dealing with these types of ideas? How
  are the s/w producers collaborating if this is so?

> So thats my idea.  Comments?

  I hope my own above have been useful. I have one final comment however
  which is that in an ideal world we'd have only one Graphics format and
  would only require a single Renderer. :-)

> Lee      Lee_Robert_Willis@cup.portal.com

yours truly,
Lou Cavallo.

jonabbey@cs.utexas.edu (Jonathan David Abbey) (03/23/91)

A WONDERFUL, wonderful idea!  Who do we talk to get some kind of official
interface defined/blessed?  Please!


-- 
-------------------------------------------------------------------------------
Jonathan David Abbey              \"I am stronger than the passing time" -Frost 
the university of texas at austin  \  jonabbey@cs.utexas.edu     "Love me, love
computer science/math?/psychology?  \ (512) 472-2052              my Amiga" -Me 

Dickson@system-m.phx.bull.com (Paul Dickson) (03/23/91)

Isn't there an IFF parser included with AmigaDOS 2.0?  Wouldn't be
better to have the renderer's output in the same format as this parser.
Then an application would only have to be able to handle sending of
parameters to the renderer that would be different from the IFF parser
and in other cases, the data from the renderer could be redirected to
the IFF parser to generate an IFF image disk file.

          -Paul Dickson

hill@evax.arl.utexas.edu (Adam Hill) (03/23/91)

    One of your "renderers" exists now -- Post 1.5 by Adrian Aalward
(sp?). Thomas Rockki (sp?) of Amiga TeX fame is using it to add
transparent Postscript support to TeX (No more Grey Boxes!! Yea!)

    Since most formats are widely availible it seems like a NEAT
shareware project (Even neater than the MSDOS "transpiler"). You could
even go one step further. Write a "object --> iff" library to render
standard (circle, bezier splines, N-splines, spheres, cubes, do
dithering etc..)

    Now if there were 30 hours a day........



-- 
 adam hill --  hill@evax.uta.edu        ASOCC - University of Texas at UTA
     I programmed for three days          Make Up Your Own Mind.. AMIGA!
     And heard no human voices.              Amiga... Multimedia NOW!  
     But the hard disk sang. - TZoP              Born To Run SVR4