POV-Ray : Newsgroups : povray.unofficial.patches : My personal wishlist : Re: My personal wishlist Server Time
2 Sep 2024 10:17:02 EDT (-0400)
  Re: My personal wishlist  
From: Chris Huff
Date: 24 Feb 2000 21:00:26
Message: <chrishuff_99-DD9497.21014824022000@news.povray.org>
In article <bCW1OIjrykoVBR6nY5iI6VMKZ3UL@4ax.com>, Peter Popov 
<pet### [at] usanet> wrote:

> : df3 output, dfc file
...
> My idea is that a new file type triggered by a comman-line (or INI)
> option is introduced. An additional depth parameter to output
> resolution has to be introduced, too. The program would then sample
> the unit cube at width*height*depth points and save the clipped
> brightness directly to a density file. Brightness should only be
> affected by pigments and media density.

Maybe something could be added to my object pattern...my proximity 
pattern might also benefit from this(compute the density pattern once 
using high settings for proximity, then use the density pattern instead 
of the proximity).


> A new type of density file (for example dfc), one that stores
> three-dimentional RGB data, would also be of use. The RGB data could
> then be used as a default color map for the density_file pattern based
> on this file if no color map is specified. Combined with df3 or dfc
> output one could easily render a glowing media version of any object,
> while preserving the colors.

Where would you get the color data from a CSG with multiple textures? 
Just add the color contribution from every object? And you would have to 
restrict yourself to the pigment, since the other features(normal, 
finish) kind of depend on having a surface.


> : strict variable types
...
> : promotion
...

I have often wished for this. I think the basic types would be:
char
int
float(maybe replace int and float with "scalar"?)
material, media, color_map, texture, etc.
object(all shapes would be of this type)
pattern(I really think patterns should be variable types too)
function(an isosurface function, it might be a good idea to let these be 
used in normal code too)

A clearer declaration syntax would be nice too:
#declare VarName = (Type) VariableStuff;
The closing semicolon would be used for all data types, instead of just 
for vectors and scalars.
Also, #declare and #local would only be used to create variables. You 
could then modify them without these keywords:
#declare MyCounter = (int)0;
MyCounter = MyCounter + 1;


> : hash variables
> 
> A hash variable is like an array but in addition to an index, each
> element has a name by which it can be invoked. For example,
> Posters[155] doesn't tell much while Posters[Peter_Popov] does, and
> they mean the same to the parser. One useful feature is that they make
> passing parameters to a macro much easier.

I think list structures(and maybe tree structures) would also be good 
additions. Or at least the ability to add to and insert into an existing 
array.(a separate data structure would likely be easier to code and 
would have a cleaner syntax)


> : spotlight scale
> 
> Non-uniform scaling of spotlights would allow for elliptical
> spotlights.

And don't forget cylinderical lights.


> : polygonal spotlight
> 
> Although unrealistic, these have their applications. Combined with an
> area light, they can be used to simulate, for example, light passing
> through a window or keyhole or similar.

This is an interesting idea, but couldn't it be done with the 
projected_through patch?


> : chop pieces off with bounding
> 
> If a bounding object is smaller than what it bounds, the results are
> unpredictable. I think a more logical behaviour would be the one seen
> in isosurfaces, i.e. the bounding object should restrict the bounded
> object, exposing the intersection surface and texture. Of course, it
> would still bound the object for ray-shape intersection tests.

This might be a good idea. On the other hand, it would reinforce the bad 
habit of using bounded_by as a kind of CSG...(remember that with some 
settings POV can override this statement and use it's own bounding)


> : leave original textures when CSGing
> 
> When performing a CGS difference or intersection, any object with a
> non-specified texture is assumed to have a black pigment and ambient
> 0. I think a more reasonable behaviour would be to ignore its texture
> and use the texture of whatever object the intersection point is in.
> Of course this could lead to "coincident interiors" problems but I
> think with proper CGSing they can be avoided.

Actually, I am pretty sure it uses the default texture, which you can 
set with the #default keyword. And I think it would be extremely 
difficult to determine which object to choose the texture from...what if 
the point is enclosed in more than one object? The current behavior of 
using higher level textures or per-object textures if defined or the 
default texture otherwise seems to make more sense.


> : seeded randomness for area_light and aa jitter
> 
> This one is pretty straight-forward. It would make animation people's
> lives easier.

I don't think this is possible. Providing a seed would allow you to 
specify the sequence of random numbers used, but you still can't decide 
when they are used. If a point gets covered up doesn't need a random 
number computed or if something causes a pixel to need more numbers than 
it did before, everything get unsynchronized and you end up with the 
same "flying pixels" or static.


> : Additional BRDF models
> 
> I recently used a rendered which supported 11 differend BRDF
> (highlights) models. Now that's cool! The authors were kind enough to
> share some of their sources with me:
> 
> http://www-graphics.stanford.edu/~smr/cs348c/surveypaper.html
> http://www.cs.columbia.edu/CAVE/curet/
> http://www.ciks.nist.gov/appmain.htm
> 
> Some of them have properties very useful for specific tasks, such as
> anisotropy (for a brushed metal look).

I will have to look at those sites...

Other features I can think of:
Simple shaders: really just an extended isosurface function capable of 
handling vectors and colors. Not necessarily as full-featured as "real" 
shaders, but potentially quite useful.

Patterned light_source's: Have the ability to apply a patterned 
color_map to a light source, with the option to use ray direction and 
depth instead of point position.(which would kind of simulate light 
coming through a colored, transparent sphere surrounding the light 
source, but with depth)
light_source {blah, blah
   PATTERN
   color_map {...}
   use_depth_for_z on/off
}

If the "use_depth_for_z"(somebody please come up with a better keyword!) 
feature is turned on, the angles of the initial emission from the light 
source will be used for the x and y axis, and the distance the ray has 
travelled for the z axis. This should make things like interference 
patterns possible.(I wonder what this would look like combined with 
scattering media and photons!)

-- 
Chris Huff
e-mail: chr### [at] yahoocom
Web page: http://chrishuff.dhs.org/


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.