<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.povray.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wfpokorny</id>
	<title>POV-Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.povray.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wfpokorny"/>
	<link rel="alternate" type="text/html" href="https://wiki.povray.org/content/Special:Contributions/Wfpokorny"/>
	<updated>2026-04-03T20:09:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/arraycoupleddf3s&amp;diff=9698</id>
		<title>User:Wfpokorny/DensityFile/arraycoupleddf3s</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/arraycoupleddf3s&amp;diff=9698"/>
		<updated>2019-08-19T20:11:40Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Eliminated pasted copy of the arraycoupleddf3s.inc file. Invalid even for POV-Ray parsing for who knows how long.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The include file arraycoupleddf3s.inc defines several macros useful for working with df3 files. Supposing it might be merged into arrays.inc given the df3 write macro is already in that include file?&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note.''' Found in August 2019 the version of the include file pasted into this web page wouldn't even parse. The version did not match that in the branch and unsure how long it was corrupted. This page updated to point to the github branch file directly. For me adding links to the wiki has been broken for a long time due the captcha mechanism not working. You'll have to cut and paste from the text below yourself to get to the include file.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The current include file can be found on github at:&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://github.com/wfpokorny/povray/blob/feature/newDensityPatternInterpolations/distribution/include/arraycoupleddf3s.inc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=9390</id>
		<title>User:Wfpokorny</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=9390"/>
		<updated>2018-06-11T13:17:42Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Updating branches perhaps useful to others.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=The Playpen= &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A bit of documentation for items currently in my POV-Ray playpen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Branches on github==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;I'm maintaining my POV-Ray patches as un-merged github branches to make it easier for me to keep them current&lt;br /&gt;
with the POV-Ray master branch. In my own space I occasionally create my own version of POV-Ray which includes &lt;br /&gt;
just the branches/patches of mine and others that I want.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pointers to active branches follow with the thought some might be generally useful to others in rolling &lt;br /&gt;
their own versions of POV-Ray. There usually additional branches on github not documented herein.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fix Polynomial Solver Accuracy===&lt;br /&gt;
&amp;lt;p&amp;gt;Started as a rework of the polysolve / sturm chain solver, but now includes solver tangled fixes for blobs as well as updates to the more general common solver mechanisms and invocations. NOTE! Work is in progress....&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See newsgroup thread: (Unable to include link due wiki captcha being broken)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/polynomialsolverAccuracy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===New soft_object and hard_object Patterns===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See newsgroup thread: (Unable to include link due wiki captcha being broken)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/soft_objectAndhard_objectPatterns&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Better Text Object Performance===&lt;br /&gt;
&amp;lt;p&amp;gt;Especially with longer text strings and inside tests. A big help if using text objects with the soft_object and hard_object patterns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git update/TrueType_BetterPerformance&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Density File Pattern Updates===&lt;br /&gt;
&amp;lt;p&amp;gt;A three pronged effort to improve .df3 density file pattern support.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Improved user documentation. &lt;br /&gt;
&amp;lt;li&amp;gt;Additional array coupled df3 creation and read support. Write support exists.  &lt;br /&gt;
&amp;lt;li&amp;gt;Fixes and extensions for the density file pattern. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See: [[User:Wfpokorny/DensityFile| Density File Pattern - proposed documentation updates.]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newDensityPatternInterpolations&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Addition black_hole warp type(s)===&lt;br /&gt;
&amp;lt;p&amp;gt;The black_hole warp in master today has just type 0 support so the type is not really documented though the parser picks it up. Further the default sucking black_hole is clamped in movement and it sometimes reaches outside the black_hole range making for interesting effects I've used, but certainly confusing results for any novice. This patch adds a type 1 version of the black_hole warp which duplicates exactly the pushing/inverted form of type 0, but for the sucking form it implements a form more like what folks would expect. The default with this patch is still type 0 so type 1 needs to be specified to use the new type.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See newsgroup thread: (Unable to include link due wiki captcha being broken)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newBlack_holeTypes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Non-portable 32 bit DF3 write capability===&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request for this rejected as not portable - and I admit I don't understand the particulars. The feature works for me on linux though and I find it useful so I maintain it for my use.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/nonPortable32bitDF3Write&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Both image_map and pigment_map support in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;Lets one use both image_map and pigment_map in density{} as a way to quickly get full color density/media.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See newsgroup thread: (Unable to include link due wiki captcha being broken)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/pigment_map_wDensity&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Unix file and console column wrap control by environment variable===&lt;br /&gt;
&amp;lt;p&amp;gt;Enabling control of the wrapping via environment variables of&lt;br /&gt;
POVRAY_CONSOLE_COLUMNS for the console and POVRAY_TEXTSTREAM_COLUMNS&lt;br /&gt;
for files and console.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Note. There is an active pull req #117 approaching this issue in another way.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/unixConsoleFileColumnWrapControl&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Fix. Rejected parser check for subsurface crash/non-function issue #122===&lt;br /&gt;
&amp;lt;p&amp;gt;Missing or mis-placed subsurface definition in global block can cause crash or give the indication the&lt;br /&gt;
subsurface feature is working when it is not. I run with this parser hack as protection pending &lt;br /&gt;
a more complete fix.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/subsurfaceCrash_Issue122_FS306&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==How to merge branches into a custom version of POV-Ray==&lt;br /&gt;
&amp;lt;p&amp;gt;Given you've already installed git and have an active local fork of POV-Ray master branches can be merged on linux with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout master &lt;br /&gt;
git branch povraySpecial&lt;br /&gt;
git checkout povraySpecial&lt;br /&gt;
git pull https://github.com/wfpokorny/povray.git fix/unixSimpleDirectMediaLayerMessages&lt;br /&gt;
... Usual prebuild.sh, configure and make ... &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incomplete section==&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/HowTo| How to get sub page...]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/Bowl&amp;diff=9370</id>
		<title>User:Wfpokorny/DensityFile/Bowl</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/Bowl&amp;diff=9370"/>
		<updated>2018-01-04T18:46:30Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Changed 3.7.1 reference to 3.8.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Df3_StringsToDF3.png|center|frame|Density_file as isosurace lathe where base df3 created from array of strings.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Df3 is created on the fly and represents the bowl profile to be rotated about y. Image on the left is the raw df3 as created via Fnct02a. Image on the right is of the bowl via Fnct02b. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The scene file in total is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#version 3.8;&lt;br /&gt;
global_settings {&lt;br /&gt;
    assumed_gamma 1&lt;br /&gt;
    ambient_light srgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
    noise_generator 3&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
#include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled df3 macros &amp;amp; functions.&lt;br /&gt;
&lt;br /&gt;
#declare AryStrs  = array[25][1]&lt;br /&gt;
#declare AryStrs[0][0]  = &amp;quot;-------------------------------------2------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[1][0]  = &amp;quot;------------------------------------3-------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[2][0]  = &amp;quot;-----------------------------------2--------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[3][0]  = &amp;quot;----------------------------------2---------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[4][0]  = &amp;quot;---------------------------------2----------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[5][0]  = &amp;quot;--------------------------------3-----------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[6][0]  = &amp;quot;-------------------------------4------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[7][0]  = &amp;quot;-------------------------------5------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[8][0]  = &amp;quot;------------------------------6-------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[9][0]  = &amp;quot;-----------------------------5--------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[10][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[11][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[12][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[13][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[14][0] = &amp;quot;---------------------------7----------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[15][0] = &amp;quot;--------------------------7-----------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[16][0] = &amp;quot;-------------------------7------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[17][0] = &amp;quot;------------------------7-------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[18][0] = &amp;quot;-----------------------7--------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[19][0] = &amp;quot;-------------------6666---------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[20][0] = &amp;quot;------------------7-------------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[21][0] = &amp;quot;-----------------7--------------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[22][0] = &amp;quot;----------------7---------------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[23][0] = &amp;quot;---------------7----------------------------------&amp;quot;;&lt;br /&gt;
#declare AryStrs[24][0] = &amp;quot;666666666666666-----------------------------------&amp;quot;;&lt;br /&gt;
//&lt;br /&gt;
//                         &amp;lt;---------------------- 50 ----------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ConvertArrayOfStringsToDF3(AryStrs,&amp;quot;StringsToDF3.df3&amp;quot;,8,5,1)&lt;br /&gt;
&lt;br /&gt;
// #error &amp;quot;Stop before render&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#declare Color_2 = srgbft &amp;lt;0.65,0.65,0.65,0,0&amp;gt;;&lt;br /&gt;
#declare Color_3 = srgbft &amp;lt;0.8,0.8,0.8,0,0&amp;gt;;&lt;br /&gt;
#declare ColorMap_CloudyGraySky2 = color_map {&lt;br /&gt;
    [ 0 Color_2 ]&lt;br /&gt;
    [ 1 Color_3 ]&lt;br /&gt;
}&lt;br /&gt;
#declare Pigment_CloudyGraySky2 = pigment {&lt;br /&gt;
    bozo sine_wave frequency 3.33 turbulence 1.0&lt;br /&gt;
    color_map { ColorMap_CloudyGraySky2 }&lt;br /&gt;
}&lt;br /&gt;
#declare Sky_Sphere00 = sky_sphere {&lt;br /&gt;
    pigment { Pigment_CloudyGraySky2 }&lt;br /&gt;
    emission rgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare Camera00 = camera {&lt;br /&gt;
    perspective&lt;br /&gt;
    location &amp;lt;2.7,2.7,-2.701&amp;gt;&lt;br /&gt;
    sky &amp;lt;0,1,0&amp;gt;&lt;br /&gt;
    angle 35&lt;br /&gt;
    right x*(image_width/image_height)&lt;br /&gt;
    look_at &amp;lt;0,0,0&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare White = srgbft &amp;lt;1,1,1,0,0&amp;gt;;&lt;br /&gt;
#declare Light00 = light_source {&lt;br /&gt;
    &amp;lt;50,150,-250&amp;gt;, White&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct00 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;StringsToDF3.df3&amp;quot; interpolate 5&lt;br /&gt;
     // warp { turbulence 0.02 octaves 6 omega 0.23 lambda 6 }&lt;br /&gt;
        translate -0.5&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct02a = function (x,y,z) {&lt;br /&gt;
    0.025-Fnct00(x,y,z)&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct02b = function (x,y,z) {&lt;br /&gt;
    0.025-Fnct00(sqrt((x*x)+(z*z)),y,z/5)&lt;br /&gt;
}&lt;br /&gt;
#declare BrownOchre = srgb &amp;lt;0.7216,0.3059,0.1569&amp;gt;;&lt;br /&gt;
#declare Iso00 = isosurface {&lt;br /&gt;
    function { Fnct02a(x,y,z) }&lt;br /&gt;
    contained_by { box { -0.5,0.5 } }&lt;br /&gt;
    threshold 0&lt;br /&gt;
    accuracy 0.0005&lt;br /&gt;
    max_gradient 6&lt;br /&gt;
    all_intersections&lt;br /&gt;
    pigment { color BrownOchre }&lt;br /&gt;
    finish { phong 0.9 }&lt;br /&gt;
}&lt;br /&gt;
#declare Object00 = object {&lt;br /&gt;
    Iso00&lt;br /&gt;
    scale &amp;lt;3.3,0.7,3.3&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//---&lt;br /&gt;
sky_sphere { Sky_Sphere00 }&lt;br /&gt;
camera { Camera00 }&lt;br /&gt;
object { Object00 }&lt;br /&gt;
light_source { Light00 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/FunctionToDF3&amp;diff=9369</id>
		<title>User:Wfpokorny/DensityFile/FunctionToDF3</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/FunctionToDF3&amp;diff=9369"/>
		<updated>2018-01-04T18:45:44Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Changed 3.7.1 reference to 3.8.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Df3_FunctionToDF3.png|center|frame|Density_file as isosurface where df3 created by macro from a defined function or object.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Converting functions or objects via functions and the object pattern into df3s. The complete scene file follows:&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#version 3.8;&lt;br /&gt;
global_settings {&lt;br /&gt;
    assumed_gamma 1&lt;br /&gt;
    ambient_light srgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
    noise_generator 3&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
#include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled df3 macros &amp;amp; functions.&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;functions.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   //--- Can turn objects into df3 via ConvertFunctionToDF3 as follows&lt;br /&gt;
// #declare Sphere00 = sphere { 0.5,0.2 }&lt;br /&gt;
// #declare Fnct00 = function { pattern { object { Sphere00 } } }&lt;br /&gt;
// ConvertFunctionToDF3(50,50,50,0.0,0.5,0.9,1.1,Fnct00,&amp;quot;FunctionToDF3.df3&amp;quot;,8,0)&lt;br /&gt;
&lt;br /&gt;
#declare Fnct00 = function (x,y,z) { f_sphere(x-0.5,y-0.5,z-0.5,0.2) }&lt;br /&gt;
&lt;br /&gt;
ConvertFunctionToDF3(50,50,50,0.0,0.5,-9e10,0.0,Fnct00,&amp;quot;FunctionToDF3.df3&amp;quot;,8,0)&lt;br /&gt;
&lt;br /&gt;
// #error &amp;quot;Stop before render if just creating df3 for future work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#declare Color_2 = srgbft &amp;lt;0.65,0.65,0.65,0,0&amp;gt;;&lt;br /&gt;
#declare Color_3 = srgbft &amp;lt;0.8,0.8,0.8,0,0&amp;gt;;&lt;br /&gt;
#declare ColorMap_CloudyGraySky2 = color_map {&lt;br /&gt;
    [ 0 Color_2 ]&lt;br /&gt;
    [ 1 Color_3 ]&lt;br /&gt;
}&lt;br /&gt;
#declare Pigment_CloudyGraySky2 = pigment {&lt;br /&gt;
    bozo sine_wave frequency 3.33 turbulence 1.0&lt;br /&gt;
    color_map { ColorMap_CloudyGraySky2 }&lt;br /&gt;
}&lt;br /&gt;
#declare Sky_Sphere00 = sky_sphere {&lt;br /&gt;
    pigment { Pigment_CloudyGraySky2 }&lt;br /&gt;
    emission rgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare Camera00 = camera {&lt;br /&gt;
    perspective&lt;br /&gt;
    location &amp;lt;2.7,2.7,-2.701&amp;gt;&lt;br /&gt;
    sky &amp;lt;0,1,0&amp;gt;&lt;br /&gt;
    angle 35&lt;br /&gt;
    right x*(image_width/image_height)&lt;br /&gt;
    look_at &amp;lt;0,0,0&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare White = srgbft &amp;lt;1,1,1,0,0&amp;gt;;&lt;br /&gt;
#declare Light00 = light_source {&lt;br /&gt;
    &amp;lt;50,150,-250&amp;gt;, White&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#declare Fnct01 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;FunctionToDF3.df3&amp;quot; interpolate 3 }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct02 = function (x,y,z) {&lt;br /&gt;
    0.025-Fnct01(x,y,z)&lt;br /&gt;
}&lt;br /&gt;
#declare Neptune = srgb &amp;lt;0.4863,0.7176,0.7333&amp;gt;;&lt;br /&gt;
#declare Iso00 = isosurface {&lt;br /&gt;
    function { Fnct02(x,y,z) }&lt;br /&gt;
    contained_by { box { 0.2+1e-6,0.8-1e-6 } }&lt;br /&gt;
    threshold 0&lt;br /&gt;
    accuracy 0.0005&lt;br /&gt;
    max_gradient 6&lt;br /&gt;
    all_intersections&lt;br /&gt;
    pigment { color Neptune }&lt;br /&gt;
    finish { phong 0.9 }&lt;br /&gt;
}&lt;br /&gt;
#declare Object00 = object {&lt;br /&gt;
    Iso00&lt;br /&gt;
    translate -0.5&lt;br /&gt;
    scale 2.2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//---&lt;br /&gt;
sky_sphere { Sky_Sphere00 }&lt;br /&gt;
camera { Camera00 }&lt;br /&gt;
object { Object00 }&lt;br /&gt;
light_source { Light00 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/TubulenceWarpsExamples&amp;diff=9368</id>
		<title>User:Wfpokorny/DensityFile/TubulenceWarpsExamples</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/TubulenceWarpsExamples&amp;diff=9368"/>
		<updated>2018-01-04T18:45:07Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Changed 3.7.1 reference to 3.8.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Df3_TurbulenceWarps.png|center|frame|Density_file as isosurface with various turbulence warps applied.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Complete pov example file for the 6 images above :&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#version 3.8;&lt;br /&gt;
global_settings {&lt;br /&gt;
    assumed_gamma 1&lt;br /&gt;
    ambient_light srgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
    noise_generator 3&lt;br /&gt;
}&lt;br /&gt;
//------ First create the df3 with 5 deep, 0.0, side padding.&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;&lt;br /&gt;
#declare maxZ=30;&lt;br /&gt;
#declare maxY=30;&lt;br /&gt;
#declare maxX=30;&lt;br /&gt;
#declare Ary=array[maxX][maxY][maxZ]&lt;br /&gt;
#declare midX=int(maxX/2);&lt;br /&gt;
#declare midY=int(maxY/2);&lt;br /&gt;
#declare midZ=int(maxZ/2);&lt;br /&gt;
#declare padMaxX=maxX-6; // Start padded at 5 end padMaxX&lt;br /&gt;
#declare padMaxY=maxY-6;&lt;br /&gt;
#declare padMaxZ=maxZ-6;&lt;br /&gt;
//-- First initialize all voxels to 0.0&lt;br /&gt;
#for (Z,0,maxZ-1)&lt;br /&gt;
  #for (Y,0,maxY-1)&lt;br /&gt;
    #for (X,0,maxX-1)&lt;br /&gt;
       #declare Ary[X][Y][Z]=0.0;&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
#end&lt;br /&gt;
//-- Create some crossing axis&lt;br /&gt;
#for (X,5,padMaxX)&lt;br /&gt;
   #declare Ary[X][midY][midZ]=0.95;&lt;br /&gt;
#end&lt;br /&gt;
#for (Y,5,padMaxY)&lt;br /&gt;
   #declare Ary[midX][Y][midZ]=0.95;&lt;br /&gt;
#end&lt;br /&gt;
#for (Z,5,padMaxZ)&lt;br /&gt;
   #declare Ary[midX][midY][Z]=0.95;&lt;br /&gt;
#end&lt;br /&gt;
#declare Df3FileName=&amp;quot;TurbulenceWarps.df3&amp;quot;;&lt;br /&gt;
ARRAYS_WriteDF3(Ary,Df3FileName,8)&lt;br /&gt;
//---&lt;br /&gt;
&lt;br /&gt;
#declare Color_2 = srgbft &amp;lt;0.65,0.65,0.65,0,0&amp;gt;;&lt;br /&gt;
#declare Color_3 = srgbft &amp;lt;0.8,0.8,0.8,0,0&amp;gt;;&lt;br /&gt;
#declare ColorMap_CloudyGraySky2 = color_map {&lt;br /&gt;
    [ 0 Color_2 ]&lt;br /&gt;
    [ 1 Color_3 ]&lt;br /&gt;
}&lt;br /&gt;
#declare Pigment_CloudyGraySky2 = pigment {&lt;br /&gt;
    bozo sine_wave frequency 3.33 turbulence 1.0&lt;br /&gt;
    color_map { ColorMap_CloudyGraySky2 }&lt;br /&gt;
}&lt;br /&gt;
#declare Sky_Sphere00 = sky_sphere {&lt;br /&gt;
    pigment { Pigment_CloudyGraySky2 }&lt;br /&gt;
    emission rgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare Camera00 = camera {&lt;br /&gt;
    perspective&lt;br /&gt;
    location &amp;lt;2.1,2.1,-2.101&amp;gt;&lt;br /&gt;
    sky &amp;lt;0,1,0&amp;gt;&lt;br /&gt;
    angle 35&lt;br /&gt;
    right x*(image_width/image_height)&lt;br /&gt;
    look_at &amp;lt;0,0,0&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare White = srgbft &amp;lt;1,1,1,0,0&amp;gt;;&lt;br /&gt;
#declare Light00 = light_source { &amp;lt;250,250,-250&amp;gt;,   White }&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;functions.inc&amp;quot;&lt;br /&gt;
#declare Fnct00 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;TurbulenceWarps.df3&amp;quot; interpolate 5&lt;br /&gt;
     //                                                        // 0&lt;br /&gt;
     // warp { turbulence 0.02 octaves 6 omega 0.33 lambda 6 } // 1&lt;br /&gt;
     // warp { turbulence 0.05 octaves 6 omega 0.44 lambda 5 } // 2&lt;br /&gt;
     // warp { turbulence -0.22 octaves 3 omega 3.0 lambda 2.7 } // 3&lt;br /&gt;
     // warp { turbulence 0.20 octaves 6 omega 0.99 lambda 5 } // 4&lt;br /&gt;
     // warp { turbulence 0.07 octaves 8 omega 0.99 lambda 7 } // 5&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct01 = function (x,y,z) {&lt;br /&gt;
    0.025-Fnct00(x,y,z)&lt;br /&gt;
}&lt;br /&gt;
#declare BaryteGreen = srgb &amp;lt;0.6157,0.7686,0.3725&amp;gt;;&lt;br /&gt;
#declare Iso00 = isosurface {&lt;br /&gt;
    function { Fnct01(x,y,z) }&lt;br /&gt;
    contained_by { box { -0.2+1e-6,1.2-1e-6 } }&lt;br /&gt;
    threshold 0&lt;br /&gt;
    accuracy 0.0005&lt;br /&gt;
    max_gradient 6  // 12 needed for warp 3&lt;br /&gt;
    all_intersections&lt;br /&gt;
    texture {&lt;br /&gt;
      pigment { color BaryteGreen }&lt;br /&gt;
      finish { ambient &amp;lt;0.03,0.02,0.0&amp;gt; diffuse 0.8,0.4 phong 0.7 }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Object00 = object {&lt;br /&gt;
    Iso00&lt;br /&gt;
    translate -0.5&lt;br /&gt;
    scale 1.7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//---&lt;br /&gt;
sky_sphere { Sky_Sphere00 }&lt;br /&gt;
camera { Camera00 }&lt;br /&gt;
light_source { Light00 }&lt;br /&gt;
object { Object00 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/BlackHoleFlower&amp;diff=9367</id>
		<title>User:Wfpokorny/DensityFile/BlackHoleFlower</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/BlackHoleFlower&amp;diff=9367"/>
		<updated>2018-01-04T18:44:26Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Changed 3.7.1 reference to 3.8.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Df3_BlackHoleFlower.png|center|frame|Density_file as isosurface flower via black_hole warps and interpolation 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Interpolation 3 for some bumps/veins. The full scene description file:&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#version 3.8;&lt;br /&gt;
global_settings {&lt;br /&gt;
    assumed_gamma 1&lt;br /&gt;
    ambient_light srgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
    noise_generator 3&lt;br /&gt;
}&lt;br /&gt;
//------ First create the df3 with 5 deep, 0.0, side padding.&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;&lt;br /&gt;
#declare maxZ=30;&lt;br /&gt;
#declare maxY=30;&lt;br /&gt;
#declare maxX=30;&lt;br /&gt;
#declare Ary=array[maxX][maxY][maxZ]&lt;br /&gt;
#declare midX=int(maxX/2);&lt;br /&gt;
#declare midY=int(maxY/2);&lt;br /&gt;
#declare midZ=int(maxZ/2);&lt;br /&gt;
#declare padMaxX=maxX-6; // Start padded at 5 end padMaxX&lt;br /&gt;
#declare padMaxY=maxY-6;&lt;br /&gt;
#declare padMaxZ=maxZ-6;&lt;br /&gt;
//-- First initialize all voxels to 0.0&lt;br /&gt;
#for (Z,0,maxZ-1)&lt;br /&gt;
  #for (Y,0,maxY-1)&lt;br /&gt;
    #for (X,0,maxX-1)&lt;br /&gt;
       #declare Ary[X][Y][Z]=0.0;&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
#end&lt;br /&gt;
//-- Create box at mid y&lt;br /&gt;
#for (Z,5,padMaxZ)&lt;br /&gt;
    #for (X,5,padMaxX)&lt;br /&gt;
       #declare Ary[X][midY][Z]=0.55;&lt;br /&gt;
    #end&lt;br /&gt;
#end&lt;br /&gt;
#declare Df3FileName=&amp;quot;BlackHoleFlower.df3&amp;quot;;&lt;br /&gt;
ARRAYS_WriteDF3(Ary,Df3FileName,8)&lt;br /&gt;
//---&lt;br /&gt;
&lt;br /&gt;
#declare Color_2 = srgbft &amp;lt;0.65,0.65,0.65,0,0&amp;gt;;&lt;br /&gt;
#declare Color_3 = srgbft &amp;lt;0.8,0.8,0.8,0,0&amp;gt;;&lt;br /&gt;
#declare ColorMap_CloudyGraySky2 = color_map {&lt;br /&gt;
    [ 0 Color_2 ]&lt;br /&gt;
    [ 1 Color_3 ]&lt;br /&gt;
}&lt;br /&gt;
#declare Pigment_CloudyGraySky2 = pigment {&lt;br /&gt;
    bozo sine_wave frequency 3.33 turbulence 1.0&lt;br /&gt;
    color_map { ColorMap_CloudyGraySky2 }&lt;br /&gt;
}&lt;br /&gt;
#declare Sky_Sphere00 = sky_sphere {&lt;br /&gt;
    pigment { Pigment_CloudyGraySky2 }&lt;br /&gt;
    emission rgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare Camera00 = camera {&lt;br /&gt;
    perspective&lt;br /&gt;
    location &amp;lt;2.1,2.1,-2.101&amp;gt;&lt;br /&gt;
    sky &amp;lt;0,1,0&amp;gt;&lt;br /&gt;
    angle 35&lt;br /&gt;
    right x*(image_width/image_height)&lt;br /&gt;
    look_at &amp;lt;0,0,0&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare White = srgbft &amp;lt;1,1,1,0,0&amp;gt;;&lt;br /&gt;
#declare Light00 = light_source { &amp;lt;150,250,-250&amp;gt;, White }&lt;br /&gt;
&lt;br /&gt;
#declare CtrVec = &amp;lt;0.5,0.5,0.5&amp;gt;;&lt;br /&gt;
#macro PetalWarps ()&lt;br /&gt;
   warp { black_hole CtrVec,0.50 falloff 2.0 strength 2.0 }&lt;br /&gt;
   warp { black_hole CtrVec,0.40 falloff 2.0 strength 2.0 }&lt;br /&gt;
   warp { black_hole CtrVec,0.30 falloff 2.0 strength 1.7 }&lt;br /&gt;
   warp { black_hole CtrVec,0.25 falloff 2.0 strength 1.5 inverse }&lt;br /&gt;
   warp { turbulence 0.015 octaves 6 omega 0.3 lambda 6 }&lt;br /&gt;
#end&lt;br /&gt;
#macro PetalTurbWarps ()&lt;br /&gt;
   warp { turbulence &amp;lt;0.02,0.05,0.02&amp;gt; }&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
#declare Fnct00a = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;BlackHoleFlower.df3&amp;quot; interpolate 3&lt;br /&gt;
        PetalWarps()&lt;br /&gt;
        PetalTurbWarps()&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct00b = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;BlackHoleFlower.df3&amp;quot; interpolate 3&lt;br /&gt;
        PetalWarps()&lt;br /&gt;
        PetalTurbWarps()&lt;br /&gt;
        translate -0.5&lt;br /&gt;
        rotate y*30&lt;br /&gt;
        translate  0.5&lt;br /&gt;
        translate &amp;lt;0,-0.01,0&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct00c = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;BlackHoleFlower.df3&amp;quot; interpolate 3&lt;br /&gt;
        PetalWarps()&lt;br /&gt;
        PetalTurbWarps()&lt;br /&gt;
        translate -0.5&lt;br /&gt;
        rotate y*60&lt;br /&gt;
        translate  0.5&lt;br /&gt;
        translate &amp;lt;0,-0.02,0&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct00 = function (x,y,z) { max(Fnct00a(x,y,z),Fnct00b(x,y,z),Fnct00c(x,y,z)) }&lt;br /&gt;
#declare Fnct01 = function (x,y,z) { 0.025-Fnct00(x,y,z) }&lt;br /&gt;
#declare Iso00 = isosurface {&lt;br /&gt;
    function { Fnct01(x,y,z) }&lt;br /&gt;
    contained_by { box { &amp;lt;0,0.3,0&amp;gt;,&amp;lt;1,0.7,1&amp;gt; } }&lt;br /&gt;
    threshold 0&lt;br /&gt;
    accuracy 0.0005&lt;br /&gt;
    max_gradient 6&lt;br /&gt;
    all_intersections&lt;br /&gt;
}&lt;br /&gt;
#declare Object00 = object {&lt;br /&gt;
    Iso00&lt;br /&gt;
    texture {&lt;br /&gt;
      pigment {&lt;br /&gt;
         spherical&lt;br /&gt;
         scale 0.5&lt;br /&gt;
         translate 0.5&lt;br /&gt;
         PetalTurbWarps()&lt;br /&gt;
         color_map {&lt;br /&gt;
         [ 0.00 srgb &amp;lt;1,0.4784,0.3804&amp;gt; ]&lt;br /&gt;
         [ 0.37 srgb &amp;lt;0.9333,0.8667,0.7647&amp;gt; ]&lt;br /&gt;
         [ 0.70 srgb &amp;lt;0.9882,0.9608,0.8078&amp;gt; ]&lt;br /&gt;
         [ 0.77 srgb &amp;lt;0.8098,0.69412,0.08235&amp;gt; ]&lt;br /&gt;
         [ 0.79 srgb &amp;lt;0.1098,0.09412,0.08235&amp;gt; ]&lt;br /&gt;
         [ 1.00 srgb &amp;lt;0.7216,0.3059,0.1569&amp;gt;*0.8 ]&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      finish { ambient &amp;lt;0.03,0.02,0.0&amp;gt; diffuse 0.8,0.4 }&lt;br /&gt;
    }&lt;br /&gt;
    translate -CtrVec&lt;br /&gt;
    scale 2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//---&lt;br /&gt;
sky_sphere { Sky_Sphere00 }&lt;br /&gt;
camera { Camera00 }&lt;br /&gt;
light_source { Light00 }&lt;br /&gt;
object { Object00 rotate &amp;lt;-22,0,-11&amp;gt; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/BlackHoleLatheGreebling&amp;diff=9366</id>
		<title>User:Wfpokorny/DensityFile/BlackHoleLatheGreebling</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/BlackHoleLatheGreebling&amp;diff=9366"/>
		<updated>2018-01-04T18:43:46Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Changed 3.7.1 reference to 3.8.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Image:Df3_GreebleDf3IsoDiag.png|center|frame|Density_file as isosurface with lathe greebling via black_hole warps.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;On the left a density_file isosurface based upon a df3 where the unit cube diagonals all have values of 0.9. On the right is the greeble-lathe effect accomplished with three black_hole warps repeating at various diagonal distances. The code in full is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#version 3.8;&lt;br /&gt;
global_settings {&lt;br /&gt;
    assumed_gamma 1&lt;br /&gt;
    ambient_light srgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
    noise_generator 3&lt;br /&gt;
}&lt;br /&gt;
//------ First create the df3 with 5 deep, 0.0, side padding.&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;&lt;br /&gt;
#declare maxZ=30;&lt;br /&gt;
#declare maxY=30;&lt;br /&gt;
#declare maxX=30;&lt;br /&gt;
#declare Ary=array[maxX][maxY][maxZ]&lt;br /&gt;
#declare midX=int(maxX/2);&lt;br /&gt;
#declare midY=int(maxY/2);&lt;br /&gt;
#declare midZ=int(maxZ/2);&lt;br /&gt;
#declare padMaxX=maxX-6; // Start padded at 5 end padMaxX&lt;br /&gt;
#declare padMaxY=maxY-6;&lt;br /&gt;
#declare padMaxZ=maxZ-6;&lt;br /&gt;
//-- First initialize all voxels to 0.0&lt;br /&gt;
#for (Z,0,maxZ-1)&lt;br /&gt;
  #for (Y,0,maxY-1)&lt;br /&gt;
    #for (X,0,maxX-1)&lt;br /&gt;
       #declare Ary[X][Y][Z]=0.0;&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
#end&lt;br /&gt;
//-- Set the cube diagonal values to 0.9 inside outer padding.&lt;br /&gt;
#for (X,5,padMaxX)&lt;br /&gt;
   #declare Ary[X][X][X]=0.9;&lt;br /&gt;
#end&lt;br /&gt;
#declare Df3FileName=&amp;quot;GreebleDf3IsoDiag.df3&amp;quot;;&lt;br /&gt;
ARRAYS_WriteDF3(Ary,Df3FileName,8)&lt;br /&gt;
//---&lt;br /&gt;
&lt;br /&gt;
#declare Color_2 = srgbft &amp;lt;0.65,0.65,0.65,0,0&amp;gt;;&lt;br /&gt;
#declare Color_3 = srgbft &amp;lt;0.8,0.8,0.8,0,0&amp;gt;;&lt;br /&gt;
#declare ColorMap_CloudyGraySky2 = color_map {&lt;br /&gt;
    [ 0 Color_2 ]&lt;br /&gt;
    [ 1 Color_3 ]&lt;br /&gt;
}&lt;br /&gt;
#declare Pigment_CloudyGraySky2 = pigment {&lt;br /&gt;
    bozo sine_wave frequency 3.33 turbulence 1.0&lt;br /&gt;
    color_map { ColorMap_CloudyGraySky2 }&lt;br /&gt;
}&lt;br /&gt;
#declare Sky_Sphere00 = sky_sphere {&lt;br /&gt;
    pigment { Pigment_CloudyGraySky2 }&lt;br /&gt;
    emission rgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare Camera00 = camera {&lt;br /&gt;
    perspective&lt;br /&gt;
    location &amp;lt;2.1,2.1,-2.101&amp;gt;&lt;br /&gt;
    sky &amp;lt;0,1,0&amp;gt;&lt;br /&gt;
    angle 35&lt;br /&gt;
    right x*(image_width/image_height)&lt;br /&gt;
    look_at &amp;lt;0,0,0&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare White = srgbft &amp;lt;1,1,1,0,0&amp;gt;;&lt;br /&gt;
#declare Light00 = light_source { &amp;lt;250,250,-250&amp;gt;, White }&lt;br /&gt;
&lt;br /&gt;
#declare Fnct00 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;GreebleDf3IsoDiag.df3&amp;quot; interpolate 5&lt;br /&gt;
        warp { black_hole &amp;lt;0,0,0&amp;gt;,0.17 falloff 3.0 strength 5 repeat &amp;lt;0.34,0.34,0.34&amp;gt; }&lt;br /&gt;
        warp { black_hole &amp;lt;0,0,0&amp;gt;,0.15 falloff 3.0 strength 5 repeat &amp;lt;0.30,0.30,0.30&amp;gt; }&lt;br /&gt;
        warp { black_hole &amp;lt;0,0,0&amp;gt;,0.13 falloff 3.0 strength 5 repeat &amp;lt;0.26,0.26,0.26&amp;gt; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct01 = function (x,y,z) {&lt;br /&gt;
    0.025-Fnct00(x,y,z)&lt;br /&gt;
}&lt;br /&gt;
#declare Magenta = srgbft &amp;lt;1,0,1,0,0&amp;gt;;&lt;br /&gt;
#declare Iso00 = isosurface {&lt;br /&gt;
    function { Fnct01(x,y,z) }&lt;br /&gt;
    contained_by { box { -0.0+1e-6,1.0-1e-6 } }&lt;br /&gt;
    threshold 0&lt;br /&gt;
    accuracy 0.0005&lt;br /&gt;
    max_gradient 6&lt;br /&gt;
    all_intersections&lt;br /&gt;
    texture {&lt;br /&gt;
      pigment { color Magenta }&lt;br /&gt;
      finish { ambient 0 }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Object00 = object {&lt;br /&gt;
    Iso00&lt;br /&gt;
    translate -0.5&lt;br /&gt;
    scale 1.7&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//---&lt;br /&gt;
sky_sphere { Sky_Sphere00 }&lt;br /&gt;
camera { Camera00 }&lt;br /&gt;
light_source { Light00 }&lt;br /&gt;
object { Object00 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note.''' The reason the above code works - that contraction stops on different radii and doesn't collapse to nothing  - is the black_hole point movement is limited to the original distance from the point to the hole's center.&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/FillingVolumeWithShapes&amp;diff=9365</id>
		<title>User:Wfpokorny/DensityFile/FillingVolumeWithShapes</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/FillingVolumeWithShapes&amp;diff=9365"/>
		<updated>2018-01-04T18:42:40Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Removed or changed 3.7.1 references.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Df3_FunctionToDF3Shapes.png|center|frame|Density_file as isosurace of many individually textured shapes filling another shape.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This example exploits the fact, with the Github branch patch updates, individual shapes and textures per voxel can be created with the density_file pattern. Using interpolation 3 or 4 at small values gives a base spherical density function in each voxel. Interpolation 0 at the same df3 size can be used to directly control the map value for pigment, texture, etc. So long as the same warps are applied to both the map value df3 and the df3 forming shapes, the map values follow - no matter how drastic the warps/turbulence.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The code below also creates the container df3 by converting a function defining a spheroid. Commented code is shown for an alternate method using a standard sphere to define the volume via a function based upon the object pattern.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The code also uses 'poly_wave 3.0' to reduce blobbing as a way to get more individualized or separated spheres. See additional commented code for various other options.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The complete scene file is:&amp;lt;/p&amp;gt;       &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#version 3.8;&lt;br /&gt;
global_settings {&lt;br /&gt;
    assumed_gamma 1&lt;br /&gt;
    ambient_light srgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
    noise_generator 3&lt;br /&gt;
 // radiosity {&lt;br /&gt;
 //   pretrace_start 0.08&lt;br /&gt;
 //   pretrace_end   2/max(image_width,image_height)&lt;br /&gt;
 //   count 250&lt;br /&gt;
 //   nearest_count 10&lt;br /&gt;
 //   error_bound 0.45&lt;br /&gt;
 //   recursion_limit 1&lt;br /&gt;
 //   low_error_factor 0.5&lt;br /&gt;
 //   gray_threshold 0&lt;br /&gt;
 //   minimum_reuse 0.015&lt;br /&gt;
 //   brightness 1.0&lt;br /&gt;
 //   adc_bailout 0.01/2&lt;br /&gt;
 //   always_sample off&lt;br /&gt;
 //   normal on&lt;br /&gt;
 // }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
#include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled df3 macros &amp;amp; functions.&lt;br /&gt;
&lt;br /&gt;
//------ First create the df3 for colormap.&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;&lt;br /&gt;
#declare maxZ=30;&lt;br /&gt;
#declare maxY=30;&lt;br /&gt;
#declare maxX=30;&lt;br /&gt;
#declare Ary=array[maxX][maxY][maxZ]&lt;br /&gt;
#declare midX=int(maxX/2);&lt;br /&gt;
#declare midY=int(maxY/2);&lt;br /&gt;
#declare midZ=int(maxZ/2);&lt;br /&gt;
#declare padMaxX=maxX-6; // Start padded at 5 end padMaxX&lt;br /&gt;
#declare padMaxY=maxY-6;&lt;br /&gt;
#declare padMaxZ=maxZ-6;&lt;br /&gt;
//-- First initialize all voxels to 0.0&lt;br /&gt;
#for (Z,0,maxZ-1)&lt;br /&gt;
  #for (Y,0,maxY-1)&lt;br /&gt;
    #for (X,0,maxX-1)&lt;br /&gt;
       #declare Ary[X][Y][Z]=0.0;&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
#end&lt;br /&gt;
//-- Create box at mid y&lt;br /&gt;
#local tmpSeed=seed(now*24*60*60);&lt;br /&gt;
#for (Z,5,padMaxZ)&lt;br /&gt;
  #for (Y,5,padMaxY)&lt;br /&gt;
    #for (X,5,padMaxX)&lt;br /&gt;
       #declare Ary[X][Y][Z]=rand(tmpSeed);&lt;br /&gt;
    #end&lt;br /&gt;
  #end&lt;br /&gt;
#end&lt;br /&gt;
#declare Df3FileName=&amp;quot;FunctionToDF3ShapesMap.df3&amp;quot;;&lt;br /&gt;
ARRAYS_WriteDF3(Ary,Df3FileName,8)&lt;br /&gt;
//---&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;functions.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   //--- Can turn objects into df3 via ConvertFunctionToDF3 as follows&lt;br /&gt;
// #declare Sphere00 = sphere { 0.5,0.2 }&lt;br /&gt;
// #declare Fnct00 = function { pattern { object { Sphere00 } } }&lt;br /&gt;
// ConvertFunctionToDF3(30,30,30,0.0,0.2,0.9,1.1,Fnct00,&amp;quot;FunctionToDF3Shapes.df3&amp;quot;,8,0)&lt;br /&gt;
&lt;br /&gt;
   #declare Fnct00 = function (x,y,z) { f_sphere((x-0.5)*1.5,y-0.5,(z-0.5)*2,0.33) }&lt;br /&gt;
&lt;br /&gt;
ConvertFunctionToDF3(30,30,30,0.0,0.2,-9e10,0.0,Fnct00,&amp;quot;FunctionToDF3Shapes.df3&amp;quot;,8,0)&lt;br /&gt;
&lt;br /&gt;
// #error &amp;quot;Stop before render in just creating df3 for future work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#declare Color_2 = srgbft &amp;lt;0.65,0.65,0.65,0,0&amp;gt;;&lt;br /&gt;
#declare Color_3 = srgbft &amp;lt;0.8,0.8,0.8,0,0&amp;gt;;&lt;br /&gt;
#declare ColorMap_CloudyGraySky2 = color_map {&lt;br /&gt;
    [ 0 Color_2 ]&lt;br /&gt;
    [ 1 Color_3 ]&lt;br /&gt;
}&lt;br /&gt;
#declare Pigment_CloudyGraySky2 = pigment {&lt;br /&gt;
    bozo sine_wave frequency 3.33 turbulence 1.0&lt;br /&gt;
    color_map { ColorMap_CloudyGraySky2 }&lt;br /&gt;
}&lt;br /&gt;
#declare Sky_Sphere00 = sky_sphere {&lt;br /&gt;
    pigment { Pigment_CloudyGraySky2 }&lt;br /&gt;
    emission rgb &amp;lt;1,1,1&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare Camera00 = camera {&lt;br /&gt;
    perspective&lt;br /&gt;
    location &amp;lt;2.7,2.7,-2.701&amp;gt;&lt;br /&gt;
    sky &amp;lt;0,1,0&amp;gt;&lt;br /&gt;
    angle 35&lt;br /&gt;
    right x*(image_width/image_height)&lt;br /&gt;
    look_at &amp;lt;0,0,0&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
#declare White = srgbft &amp;lt;1,1,1,0,0&amp;gt;;&lt;br /&gt;
#declare Light00 = light_source {&lt;br /&gt;
    &amp;lt;50,150,-250&amp;gt;, White&lt;br /&gt;
}&lt;br /&gt;
#macro TheWarps00 ()&lt;br /&gt;
       scale 2.7&lt;br /&gt;
       warp { turbulence &amp;lt;0.027,0.025,0.026&amp;gt; octaves 9 omega 0.95 lambda 1.414 } // Sphere of stones?&lt;br /&gt;
       scale 1/2.7&lt;br /&gt;
    // warp { turbulence -0.02 octaves 5 omega 1.33 lambda 1.7 }  //--- This cool&lt;br /&gt;
    // warp { turbulence 0.01 octaves 3 omega 1.2 lambda 9.0 }    //--- Sphere-ish&lt;br /&gt;
    // warp { turbulence 0.03 octaves 4 omega 1.70 lambda 3.3 }   //&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
#declare Fnct01 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;FunctionToDF3Shapes.df3&amp;quot; interpolate 3&lt;br /&gt;
       poly_wave 3.0&lt;br /&gt;
       TheWarps00()&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct02 = function (x,y,z) {&lt;br /&gt;
  //0.025-(Fnct01(x,y,z)-f_granite(x*20,y*20,z*20)*0.05) // Needs higher max gradient&lt;br /&gt;
    0.025-Fnct01(x,y,z)&lt;br /&gt;
}&lt;br /&gt;
#declare Iso00 = isosurface {&lt;br /&gt;
    function { Fnct02(x,y,z) }&lt;br /&gt;
    contained_by { box { &amp;lt;0.2,0.1,0.30&amp;gt;,&amp;lt;0.8,0.9,0.70&amp;gt; } }&lt;br /&gt;
    threshold 0&lt;br /&gt;
    accuracy 0.001&lt;br /&gt;
    max_gradient 6&lt;br /&gt;
    all_intersections&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct03 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;FunctionToDF3ShapesMap.df3&amp;quot; interpolate 0&lt;br /&gt;
        TheWarps00()&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
#declare Object00 = object {&lt;br /&gt;
    Iso00&lt;br /&gt;
    texture {&lt;br /&gt;
      pigment {&lt;br /&gt;
         function { Fnct03(x,y,z) }&lt;br /&gt;
         color_map {&lt;br /&gt;
         [ 0.00 srgb &amp;lt;1,0.4784,0.3804&amp;gt; ]&lt;br /&gt;
         [ 0.37 srgb &amp;lt;0.9333,0.8667,0.7647&amp;gt; ]&lt;br /&gt;
         [ 0.70 srgb &amp;lt;0.9882,0.9608,0.8078&amp;gt; ]&lt;br /&gt;
         [ 0.77 srgb &amp;lt;0.8098,0.69412,0.08235&amp;gt; ]&lt;br /&gt;
         [ 0.79 srgb &amp;lt;0.1098,0.09412,0.08235&amp;gt; ]&lt;br /&gt;
         [ 1.00 srgb &amp;lt;0.7216,0.3059,0.1569&amp;gt;*0.8 ]&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      finish { phong 0.7 phong_size 77 }&lt;br /&gt;
    }&lt;br /&gt;
    translate -0.5&lt;br /&gt;
    scale 4.0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//---&lt;br /&gt;
sky_sphere { Sky_Sphere00 }&lt;br /&gt;
camera { Camera00 }&lt;br /&gt;
object { Object00 }&lt;br /&gt;
light_source { Light00 }&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile&amp;diff=9364</id>
		<title>User:Wfpokorny/DensityFile</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile&amp;diff=9364"/>
		<updated>2018-01-04T18:38:57Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Updates to better reflect current POV-Ray versions and not presume patch adoption version.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Patterns]]&lt;br /&gt;
{{#indexentry:density_file, keyword}}&lt;br /&gt;
{{#indexentry:density_file, pattern}}&lt;br /&gt;
{{#indexentry:keyword, density_file}}&lt;br /&gt;
{{#indexentry:pattern, density_file}} &lt;br /&gt;
{{#indexentry:df3, density_file}}&lt;br /&gt;
{{#indexentry:keyword, df3}} &lt;br /&gt;
{{#indexentry:interpolate, density_file}}&lt;br /&gt;
{{#indexentry:keyword, interpolate}} &lt;br /&gt;
{{#indexentry:df3}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note!''' While the following density_file (.df3) pattern documentation is often valid with respect to the current 3.7 and 3.8 forms of df3 value interpolation, it is written as if the additional interpolation modes proposed in https://github.com/wfpokorny/povray/tree/feature/newDensityPatternInterpolations have been adopted.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note!''' After some discussion it's was decided the original 'assist' interpolation modes 6-12 would be dropped for methods already supported. However, newer texturing assist modes 9 &amp;amp; 10 are currently in play in the patch and not well documented.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
= Density File Pattern =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The density_file pattern is a 3-D bitmap pattern that occupies a unit cube from location &amp;lt;0,0,0&amp;gt; to &amp;lt;1,1,1&amp;gt;.  The data file is a raw binary file format created for POV-Ray called the df3 format.  This pattern was originally created for use with halo or media, but it may be used anywhere a pattern may be used.  The core syntax whether used in a normal, pattern or pigment block is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;density_file df3 [file name] [interpolate Type]&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
where the file name would be placed in double quotes and the interpolation type would be an integer value 0 through 5. For example:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;density_file df3 &amp;quot;star.df3&amp;quot; 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general forms for each of the normal, pattern and pigment blocks are: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
normal {&lt;br /&gt;
  density_file df3 [filename] [,Bump_Size]&lt;br /&gt;
  [interpolate Type]&lt;br /&gt;
  [NORMAL_MODIFIERS...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where Bump_Size is an optional float value,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pattern {&lt;br /&gt;
  density_file df3 [filename] [interpolate Type]&lt;br /&gt;
  [PATTERN_MODIFIERS...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pigment {&lt;br /&gt;
  density_file df3 [filename] [interpolate Type]&lt;br /&gt;
  [PIGMENT_MODIFIERS...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The df3 file format ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The df3 format consists of a 6 byte header of three 16-bit, unsigned integers with high order bytes first (big-endian order). These three values give the x,y,z size of the data in voxels.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The header is followed by x*y*z unsigned, big-endian encoded, integers with resolutions of 8, 16 or 32 bits. The resolution of the data is determined by the size of the df3 file. That is, if the file - minus the header - is twice as long as an 8 bit file, it is taken to contain 16 bit data. If it is four times as long, it is taken to contain 32 bit data.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How the density_file pattern works ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The density pattern occupies the unit cube &amp;lt;0,0,0&amp;gt; to &amp;lt;1,1,1&amp;gt; regardless of the x, y, z dimensions in voxels. It remains at 0.0 for all areas beyond the unit cube. Data values in the ranges of 0 to 255 (8 bit/1 byte), 0 to 65535 (16 bit/2 bytes) and 0 to 4294967295 (32 bit/4 bytes), are scaled by the various interpolation methods to a float value in the range 0.0 to 1.0. The larger 2 byte and 4 byte depths providing better resolution.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Interpolation options. ===&lt;br /&gt;
&amp;lt;p&amp;gt;There are currently 6 data interpolation types numbered 0 through 5, with the types larger than 2 being available only with the patch. If nothing is specified via the interpolate keyword, the default is 0 which does no interpolation - meaning for a given location in the unit cube, the 0.0 to 1.0 value of the containing voxel is returned. The other interpolation methods available are:&amp;lt;/p&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Tri-linear. Similar to two dimensional image method, but for three dimensions. &lt;br /&gt;
&amp;lt;li&amp;gt; Tri-cubic.  Similar to two dimensional image method.&lt;br /&gt;
&amp;lt;li&amp;gt; Weak exponential blobbing of defined voxels in 4x4x4 local sub regions. &lt;br /&gt;
&amp;lt;li&amp;gt; Moderate  exponential blobbing of defined voxels in 6x6x6 local sub regions. &lt;br /&gt;
&amp;lt;li&amp;gt; Strong exponential blobbing of defined voxels in 8x8x8 local sub regions.&lt;br /&gt;
&amp;lt;li&amp;gt; NA&lt;br /&gt;
&amp;lt;li&amp;gt; NA&lt;br /&gt;
&amp;lt;li&amp;gt; NA&lt;br /&gt;
&amp;lt;li&amp;gt; Noisy, nearest non-zero voxel value. Texturing use. &lt;br /&gt;
&amp;lt;li&amp;gt; Nearest non-zero voxel value. Texturing use. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If an interpolate value not supported is specified, the interpolation defaults to tri-cubic interpolation, 2, in POV-Ray versions 3.6 and later.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exponential blobbing interpolations. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Exponential blobbing techniques in POV-Ray date to the introduction of isosurface objects. The method here borrows from one common technique with the form:&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;1/exp((function's value)*(blobbing strength))&amp;lt;/pre&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;As implemented, for each evaluated point in the unit cube, the code sums the result of the equation:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(1/exp(pow(point_to_voxel_distance,2)*(internalTuningBias/voxel_value))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;for all adjacent df3 values &amp;gt;0 within the NxNxN sub-cube around the evaluated point. Resulting values &amp;gt;1 are clamped to 1.0. The larger the sub cube, the stronger the blobbing which can be accommodated.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The algorithm has been tuned so 1.0 values for each of the exponential blobbing interpolations just fit within the corresponding sub cube. The blobbing can be adjusted without the need to regenerate a df3 by using the standard pattern wave modifier poly_wave &amp;lt;float&amp;gt;. Poly_wave values &amp;gt;=1.0 should always work and reduce the blobbing. Values &amp;lt; 1.0 increase the blobbing and can cause sub cube overruns. Overruns will appear as discontinuities in the final pattern.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Only interpolation 0 is voxel centered in 3.8.0 and earlier releases. ===&lt;br /&gt;
&amp;lt;p&amp;gt;For version 3.7.0 and 3.8, the interpolations 0 to 2 are shown below in order, left to right, as a pigment on a plane for an 11x11x11 df3 file where a single center voxel has a value of 0.5 while all others are 0.0. The red dots mark the vertices around our center voxel.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_I0thru2_370.png|center|frame|Density_file interpolations for single center voxel as a green pigment on a plane with release 3.7.0.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The tri-linear and tri-cubic interpolations are vertex centered without the patch resulting in a half voxel negative shift in x,y,z .  This shift is perhaps of no consequence if rendering media. It does however matter if, for example, building a df3 based isosurface or when trying to control textures for media for any formed objects using interpolation 0.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Offset tri-linear and tri-cubic results can be centered with a positive translation of one half a voxel size in x,y and z. For the 11x11x11 df3 example use:&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;translate &amp;lt;-0.5+(1/11/2),-0.5+(1/11/2),-0.5+(1/11/2)&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;to get the density_file pattern exactly centered upon the origin. In a function for an isosurface this adjustment to center on the origin would be something like:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;FnctAdjustToCenter(x+0.5-(1/11/2),y+0.5-(1/11/2),z+0.5-(1/11/2))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The patch makes all interpolations voxel, and so too unit cube, centered. ===&lt;br /&gt;
&amp;lt;p&amp;gt;In addition to adding density_file pattern interpolation modes, the patch centers all the interpolated results. The patch interpolations 0 to 5 are shown in order, left to right, in the following image.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_I0thru5_371.png|center|frame|Density_file interpolations for single center voxel as a green pigment on a plane.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note.''' Backward, shifted compatibility for the older 1 &amp;amp; 2 methods is available by using interpolations 11 &amp;amp; 12, respectively.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Tri-linear interpolation has creases, tri-cubic interpolation wobbles/rings. ===&lt;br /&gt;
&amp;lt;p&amp;gt;The following figure shows isosurfaces for interpolations 1 through 5, left to right, setting the threshold very near zero to better see the non-zero values returned. The df3 used is a 15x15x15 arrangement where an x,z box has been centered in y and through which there is a y column of &amp;gt;0.0 values. The values for the non-zero voxels in the top row are  0.1 and the bottom row 0.9.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The former better showing the crease effect of tri-linear interpolation, the latter, the ring of tri-cubic interpolation. The tri-cubic mode always wobbles, but the most severe artifacts can be avoided by using values not near 0.0 and 1.0 where pattern clipping occurs.&amp;lt;/p&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_isoBoxOnSpindle.png|center|frame|Density_file interpolations 1-5 for defined voxels arranged as box on spindle.]]&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Lastly, with respect the the ringing of the tri-cubic interpolation, there are at times, additional harmonics as shown at the bottom of the following image which has been gamma adjusted to make this clear. The df3 sets only 3 voxels, here seen as the brighter green rectangles.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_TriCubic2ndRingExample.png|center|frame|Density_file second ring example with tri-cubic interpolation.]]&lt;br /&gt;
&lt;br /&gt;
=== DF3 value and density_file interpolation effects on an isosurface max gradient. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Interpolation methods and df3 values affect the max gradient in isosurface use. For tri-linear and tri-cubic Interpolations 1 and 2, lower values result in lower gradients due the typically longer ramp from the &amp;gt;0 edge to the voxel value used as a threshold. With the exponential blobbing of modes 3, 4 and 5, the lower gradients happen instead at larger voxel values - lower voxel values result in small spheres with much sharper local gradients. Gradients for interpolations 0-5 tend to increase as the df3 file's voxel count increase.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Interpolations 3, 4 and 5 max values always go to 1.0 at any &amp;gt;0.0 voxel center, where interpolations 1 and 2 peak at the voxel's specified &amp;gt;0.0 value.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;''Reported'' maximum gradients for df3 based isosurfaces will often be much higher than what can be used. These higher gradients occur where a ray catches the far corner or edge of the df3-function in a direction more perpendicular to the best overall local gradient.  Note. This far corner, near threshold, gradient effect happens with other patterns too and can often be ignored in practice.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use a buffer of five 0.0 voxels on all sides to avoid density_file edge effects. ===&lt;br /&gt;
&amp;lt;p&amp;gt;While not a hard and fast rule, all the interpolations other than 0, 9 and 10, will wrap or repeat values on the sides. The general recommendation of five comes from interpolation five's need for an 8 grid range (4 per side) about any evaluated point - plus a half voxel grid for the internal vertex to voxel center correction of interpolations 1-5. Often smaller buffer amounts can be used.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are two images. In the first, the lower-left-forward corner of the df3 has been filled with 0.2 values with all others 0.0. In the second image the top-right-back corner of df3 file has been set to values of 0.2 with all others set to 0.0. Interpolations 0 through 5 are shown left to right in each of these two images as a pigment on an x,y plane at the df3 unit cube's z center.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_LftFrontI0Thru5.png|center|frame|(1) Density_file interpolations 0-5 with defined left, bottom, front voxels.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_RghtBackI0Thru5.png|center|frame|(2) Density_file interpolations 0-5 with defined right, top, back voxels.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;All truncate sharply to 0.0 where values have been run to the unit cube sides. This abrupt change is especially inconvenient for isosurface use, but the hard edge can often be seen in other pattern uses as some artifact.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The tri-linear and tri-cubic interpolations, 1 and 2, wrap side to opposite side in the lower-left-forward side-abutted case shown in the first row. These same interpolations truncate in the rop-right-back side-abutted case shown in the second row.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The exponential blobbing of 3 through 5 all repeat - or add values - at the last voxel position at the sides. This can sometimes be compensated for by lowering the on side and in-corner values.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== df3 file size. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Df3 files can get very large, very quickly given the cubed dimensions. A df3 1000x1000x1000 at 1 byte resolution will take a gigabyte of storage. It practice, aim to reduce the z dimension as much as possible letting the density_file pattern scale up to the unit cube. Later scale the unit cube dimension to the desired final size.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== 3D isosurface extrusion of image via shallow in z, density_file pattern. ====&lt;br /&gt;
&amp;lt;p&amp;gt;An example compressing the df3 in one dimension comes naturally when the density_file pattern is used for extrusion of a 2D image into 3D shape. The outline for such an extrusion is shown in the following code snippets with a resulting image.  A 500x500x13 deep df3 of the red in a 2D image, at left below, is created with the following code:&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
#include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled df3 macros &amp;amp; functions.&lt;br /&gt;
&lt;br /&gt;
#declare ImageFileNamesAry=array[3] {&lt;br /&gt;
   &amp;quot;BlackRedLettersIn.png&amp;quot;,&lt;br /&gt;
   &amp;quot;BlackRedLettersIn.png&amp;quot;,&lt;br /&gt;
   &amp;quot;BlackRedLettersIn.png&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
//                                  Red     &lt;br /&gt;
ConvertImagesToDF3(500,500,0.0,1.0,&amp;lt;1,0,0&amp;gt;,0.2,1,ImageFileNamesAry,&amp;quot;BlackRedLetters.df3&amp;quot;,8,5)&lt;br /&gt;
&lt;br /&gt;
#error &amp;quot;Stopping after parse stage for df3 creation from image.&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The include file arrays.inc is already part of POV-Ray and the arraycoupleddf3s.inc file is given in the examples section and is part of the Github patch branch. Once the df3 representation of the 2D image exists, the following code is used to create the function for the isosurface text using blobbing interpolation 5.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#declare Fnct00 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;BlackRedLetters.df3&amp;quot; interpolate 5&lt;br /&gt;
        translate -0.5 // Center about origin for isosurface&lt;br /&gt;
        scale &amp;lt;1,1,1/((500+10)/(3+10))&amp;gt;&lt;br /&gt;
        warp { turbulence &amp;lt;0.015,0.015,0&amp;gt; octaves 6 omega 0.43 lambda 6 }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct01 = function (x,y,z) {&lt;br /&gt;
    0.025-Fnct00(x,y,z)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_BlackRedLetters.png|center|frame|Density_file as isosurface extrusion of 2D image while selecting color for extrusion.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In the function declaration, Fnct00, the pattern is centered about the origin with a translate. The z dimension, which would otherwise render stretched, is scaled back to a desired size. The turbulence warp in x and y roughens up the 3D text sides leaving the front and back smooth. The +10 accounts for the the buffer of 0.0 values about the 3 deep, in z, df3 data.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Function Fnct01 gets used in the isosurface  and the general form here works more or less universally with the density_file pattern when the isosurface threshold is 0.0. '''Note.''' While a couple of functions are required for the isosurface set up, the standard pattern modifiers do most of the work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Performance of various interpolations. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Generally the internal pattern performance  in terms of the interpolation numbers runs 0 --&amp;gt; 1 --&amp;gt; 3 --&amp;gt; 2 --&amp;gt; 4 --&amp;gt; 5 from fastest to slowest with a strong dependence on df3 data density, values and ultimate pattern use. As pigments all perform well. Media and isosurface use will amplify the performance differences. With respect to isosurfaces and remembering how the gradients change, it happens for larger df3 values, interpolation 5 can be the fastest because the isosurface gradients are in that case the most gradual.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Tip. Using frequency 0 for better performance. ===&lt;br /&gt;
&amp;lt;p&amp;gt;The density_file pattern like many other patterns supports the frequency, phase and waveform modifiers. If these are not in use, some of the code which does the wave related adjustments can be bypassed by setting the frequency to 0. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#declare Fnct00 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;test.df3&amp;quot; interpolate 1 frequency 0 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The performance gains are typically less than 2 percent per density_file and there is one side effect important to maps. The wave code  bypassed reduces all values downward by a very small amount to keep values from actually reaching 1.0. Maps wrap back to zero at 1.0 and because users often code maps as [0-1] this wrap might lead to confusion.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The 1.0 value isn't typically an issue for isosurfaces and, if you know the df3 or other pattern as interpolated never reaches 1.0, the frequency 0 trick can be used.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional examples and arraycoupleddf3s.inc ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;POV-Ray ships with one example df3 file in the include directory called spiral.df3 which is used by two sample scenes in: scenes -&amp;gt; textures -&amp;gt; patterns -&amp;gt; densfile.pov and scenes -&amp;gt; interior -&amp;gt; media -&amp;gt; galaxy.pov.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/arraycoupleddf3s|arraycoupleddf3s.inc]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/WriteDF3Example|Creating a df3 file with arrays.inc's ARRAYS_WriteDF3 macro]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/df3XYZsizeBashExample|Simple bash script to query x, y, z ranges of an existing df3 file.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/DepthMap64BitDf3RsltStoreExample|Orthogonal depth map with trace. Storing +-64 bit values in a df3 file.]]  &lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/BlackHoleLatheGreebling|Lathe like greebling using density_file pattern with black_hole warps.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/BlackHoleFlower|Flower formed using multiple black_hole warps on df3, density_file pattern.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/TubulenceWarpsExamples|Various turbulence warps applied to simple axis crossing df3.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/FunctionToDF3|Converting functions and objects to df3s with FunctionToDF3 macro.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/FillingVolumeWithShapes|Filling a volume with many individually textured shapes.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/Bowl|Isosurace lathe where base df3 created from array of strings.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/Twist|Place holder for twist example. Perhaps not worth keeping without interpolations 9,11-12?]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:POV-Ray_Feature_Requests&amp;diff=9363</id>
		<title>HowTo:POV-Ray Feature Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:POV-Ray_Feature_Requests&amp;diff=9363"/>
		<updated>2018-01-04T18:19:30Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Update note related to Flyspray to Github issue migration.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We all want to see POV-Ray improved, and from time to time it may occur to us that there's a feature that we would like to see, or something we'd like to see improved. The proper place for &amp;quot;feature wishlists&amp;quot; is the bugtracking and feature-request system on [https://github.com/POV-Ray/povray/issues Github], as that's ''the'' primary place where the developers will look for them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;Note&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; All issues still open in our previous [http://bugs.povray.org/ FlySpray Bug Reporting System] have been ported to the new [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. Please exclusively use Github for new issues and updates to open issues.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When ''making'' feature requests, a word of advice:&lt;br /&gt;
&lt;br /&gt;
Please ''do'' read [[HowTo:Make A Bug Report]] and [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html How to Report Bugs Effectively] before submitting any entries to the issue tracker, and ''do'' heed the advice presented there. By following those rules - or at least keeping them in mind as you file issues - you make life a lot easier for the people you hope to address the issues.&lt;br /&gt;
&lt;br /&gt;
Some other points raised in [http://news.povray.org/povray.advanced-users/thread/%3C4c1d52c5%241%40news.povray.org%3E/] and [http://news.povray.org/povray.general/thread/%3C4c09591e%241%40news.povray.org%3E/]:&lt;br /&gt;
&lt;br /&gt;
* If discussion of a feature request has resulted in a summary or conclusion that differs from the original request, a new feature request should not be made. Instead, the existing one should be changed. This implies contributing ideas to the feature request discussion, and then coming up with a single coherent idea, not leaving it at two half-finished ideas.&lt;br /&gt;
* Closely-related feature requests should be grouped together; e.g. requests for Windows UI enhancements with respect to the editor such as &amp;quot;Delete&amp;quot;, &amp;quot;Reload&amp;quot; and &amp;quot;Rename&amp;quot; commands could reasonably be put into a single request (all at once or via editing a bug later).&lt;br /&gt;
* There is a feature to allow other users and/or developers to comment on bugs &amp;amp; feature requests on github, but this is primarily intended for providing additional information, or feedback on the current status. For proper discussions, it lacks the necessary publicity. (When was the last time anyone just browsed the github just to see if there was some interesting discussion going on in some of the entries?) The POV-Ray community is strongest in the newsgroups. That said, the problem with ''discussions'' about feature requests is that they tend to have ''no'' clear-cut result whatsoever, as they tend do be free brainstorming sessions - unless there's someone with the necessary will and authority (e.g. because he has started the discussion in the first place) &amp;quot;driving&amp;quot; the discussion to a proper conclusion (ideally by summarizing the discussion and result in a proper place). In situations like these, github excels.&lt;br /&gt;
* A sensible rule for opening a new feature request might then be that it must be discussed in the newsgroups first, to weed out crackpot ideas and to refine ideas by feedback from what users actually need. After discussion, the request should only be entered if a member of the POV-Ray team deems the request reasonable (note that a request should not be deemed unreasonable at this point just because it would be too much effort to implement right now).&lt;br /&gt;
* Excessive use/misuse of the newsgroups and github may be considered &amp;quot;vandalism&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Make_A_Bug_Report&amp;diff=9362</id>
		<title>HowTo:Make A Bug Report</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Make_A_Bug_Report&amp;diff=9362"/>
		<updated>2018-01-04T18:17:20Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Update notes related to Flyspray to Github issue migration.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=====  Reporting bugs in POV-Ray ===== &lt;br /&gt;
&amp;lt;p&amp;gt;Bug reports are an essential part of development, and the developers need you to let them know about programming defects in POV-Ray. However, there are a few things that you need to keep in mind when you are thinking about submitting a bug report or requesting a new feature. Please take a few moments to read this brief list of guidelines ''before'' you open a new task in our [https://github.com/POV-Ray/povray/issues Github Issue Tracking System].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;Note&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; All issues still open in our previous [http://bugs.povray.org/ FlySpray Bug Reporting System] have been ported to the new [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. Please exclusively use Github for new issues and updates to open issues.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Guidelines for opening new tasks =====&lt;br /&gt;
* Take some minutes of your time and read [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html this] document, it will teach you how to report a bug correctly.&lt;br /&gt;
* If you're not sure it's a bug, or how to report it, chat with the folks in the [http://news.povray.org/povray.beta-test/ beta-test forum].&lt;br /&gt;
* We cannot accept bug reports for modified versions of POV-Ray.&lt;br /&gt;
* In almost all cases where a rendering bug is being reported, we require a minimal sample scene causing the bug be submitted, as well as an image showing the problem.&lt;br /&gt;
* Always perform a search on '''both open and closed''' 'issues' or 'tasks' before opening a new one. Your bug might already have been reported, or your feature requested.&lt;br /&gt;
* Use the English language in any tasks you open.  Nothing will get done if we can't understand you.&lt;br /&gt;
* Only report one bug or request one feature per task.&lt;br /&gt;
* If you report a bug, and we mark it as 'requires testing', then please test it and add a comment to the task telling us how well it works.&lt;br /&gt;
* If a task is closed as fixed then try the [https://github.com/POV-Ray/povray/releases development version] before requesting that it be re-opened.&lt;br /&gt;
* If we deny your request to re-open a task, check the history/comments for our reason. If you are unsatisfied with the reason, you are welcome to discuss it in the [http://news.povray.org/ forums].&lt;br /&gt;
* Be polite.  Remember that you got POV-Ray for free.&lt;br /&gt;
&lt;br /&gt;
===== Text formatting tips =====&lt;br /&gt;
Github allows for a lot more formatting within task descriptions and comments. Here are a few helpful essentials:&lt;br /&gt;
* To quote some other comment, use the github quote feature after marking the text to be quoted.&lt;br /&gt;
* To make code, use the mark code feature of github after marking your code.&lt;br /&gt;
* Refer to github issues and pull request by number prefixed with # and github will create the link. Please refer to older Flyspray tasks by their numeric id preceded by &amp;quot;&amp;lt;tt&amp;gt;FS#&amp;lt;/tt&amp;gt;&amp;quot; (e.g. &amp;lt;tt&amp;gt;FS#123&amp;lt;/tt&amp;gt;) and perhaps insert the URL for as github will create the corresponding link.&lt;br /&gt;
* Do make use of the preview button.&lt;br /&gt;
&lt;br /&gt;
===== Miscellaneous =====&lt;br /&gt;
* To illustrate your bug report or comment with images, test scenes or zip files, please do make use of the &amp;quot;attach file&amp;quot; functionality, rather than linking to some 3rd party image hosting site. This way the uploaded files will remain accessible as long as the github issue persists. Note when uploading scene related files the POV-Ray extensions of .pov and .inc are not supported; needing an additional .txt suffix before upload. Further .tar and .gz files are '''not''' supported as of this writing, but rather only .zip. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Knowledgebase:POV-Ray Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9179</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9179"/>
		<updated>2017-02-16T15:42:48Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding pointer to PovClipse2.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available and wished for 'How To' articles. If you add a new article, please list and link it here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;Note&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; Some of the older articles, written while 3.7.0 was being developed, are in need of update.&amp;lt;/p&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Please read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Discussions about this page should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Subject Areas==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
====Modeling====&lt;br /&gt;
*[https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray How to: Use POV-Ray with Blender] &lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
*[[HowTo:Use for loop over traditional while loop | How to: Use for loop over traditional while loop]]&lt;br /&gt;
&lt;br /&gt;
====Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[http://www.buckosoft.com/povclipse2 How to use PovClipse2 : An Eclipse plugin to manage POV-Ray source] &lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
==POV-Ray troubleshooting==&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*Installation Troubleshooting currently via [http://news.povray.org/groups/ newsgroups]. &lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]]&lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests | How to make a feature request]]&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#POV-Ray troubleshooting | POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Make_A_Bug_Report&amp;diff=9178</id>
		<title>HowTo:Make A Bug Report</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Make_A_Bug_Report&amp;diff=9178"/>
		<updated>2017-01-24T13:35:11Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Cleanup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=====  Reporting bugs in POV-Ray ===== &lt;br /&gt;
&amp;lt;p&amp;gt;Bug reports are an essential part of development, and the developers need you to let them know about programming defects in POV-Ray. However, there are a few things that you need to keep in mind when you are thinking about submitting a bug report or requesting a new feature. Please take a few moments to read this brief list of guidelines ''before'' you open a new task in our [https://github.com/POV-Ray/povray/issues Github Issue Tracking System].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;Note&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; We are in the process of porting issues still open in our previous [http://bugs.povray.org/ FlySpray Bug Reporting System] to the new &lt;br /&gt;
[https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. During this transition it is necessary to review &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; systems to know if an issue has already been made known to the developers. Please open &amp;lt;em&amp;gt;new&amp;lt;/em&amp;gt; issues in the [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. If a FlySpray issue is marked as 'tracked on github' please make further updates on github.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===== Guidelines for opening new tasks =====&lt;br /&gt;
* Take some minutes of your time and read [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html this] document, it will teach you how to report a bug correctly.&lt;br /&gt;
* If you're not sure it's a bug, or how to report it, chat with the folks in the [http://news.povray.org/povray.beta-test/ beta-test forum].&lt;br /&gt;
* We cannot accept bug reports for modified versions of POV-Ray.&lt;br /&gt;
* In almost all cases where a rendering bug is being reported, we require a minimal sample scene causing the bug be submitted, as well as an image showing the problem.&lt;br /&gt;
* Always perform a search on '''both open and closed''' 'issues' or 'tasks' before opening a new one. Your bug might already have been reported, or your feature requested.&lt;br /&gt;
* Use the English language in any tasks you open.  Nothing will get done if we can't understand you.&lt;br /&gt;
* Only report one bug or request one feature per task.&lt;br /&gt;
* If you report a bug, and we mark it as 'requires testing', then please test it and add a comment to the task telling us how well it works.&lt;br /&gt;
* If a task is closed as fixed then try the [https://github.com/POV-Ray/povray/releases development version] before requesting that it be re-opened.&lt;br /&gt;
* If we deny your request to re-open a task, check the history/comments for our reason. If you are unsatisfied with the reason, you are welcome to discuss it in the [http://news.povray.org/ forums].&lt;br /&gt;
* Be polite.  Remember that you got POV-Ray for free.&lt;br /&gt;
&lt;br /&gt;
===== Text formatting tips =====&lt;br /&gt;
Github allows for a lot more formatting within task descriptions and comments. Here are a few helpful essentials:&lt;br /&gt;
* To quote some other comment, use the github quote feature after marking the text to be quoted.&lt;br /&gt;
* To make code, use the mark code feature of github after marking your code.&lt;br /&gt;
* Refer to github issues and pull request by number prefixed with # and github will create the link. Please refer to older Flyspray tasks not yet ported by their numeric id preceded by &amp;quot;&amp;lt;tt&amp;gt;FS#&amp;lt;/tt&amp;gt;&amp;quot; (e.g. &amp;lt;tt&amp;gt;FS#123&amp;lt;/tt&amp;gt;) and perhaps insert the URL for as github will create the corresponding link.&lt;br /&gt;
* Do make use of the preview button.&lt;br /&gt;
&lt;br /&gt;
===== Miscellaneous =====&lt;br /&gt;
* To illustrate your bug report or comment with images, test scenes or zip files, please do make use of the &amp;quot;attach file&amp;quot; functionality, rather than linking to some 3rd party image hosting site. This way the uploaded files will remain accessible as long as the github issue persists. Note when uploading scene related files the POV-Ray extensions of .pov and .inc are not supported; needing an additional .txt suffix before upload. Further .tar and .gz files are '''not''' supported as of this writing, but rather only .zip. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Knowledgebase:POV-Ray Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9177</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9177"/>
		<updated>2017-01-23T15:53:25Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: HowTo rearrangement &amp;amp; simplification given efforts stalled relative to original plan.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available and wished for 'How To' articles. If you add a new article, please list and link it here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;Note&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; Some of the older articles, written while 3.7.0 was being developed, are in need of update.&amp;lt;/p&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Please read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Discussions about this page should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Subject Areas==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
====Modeling====&lt;br /&gt;
*[https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray How to: Use POV-Ray with Blender] &lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
*[[HowTo:Use for loop over traditional while loop | How to: Use for loop over traditional while loop]]&lt;br /&gt;
&lt;br /&gt;
====Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
==POV-Ray troubleshooting==&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*Installation Troubleshooting currently via [http://news.povray.org/groups/ newsgroups]. &lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]]&lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests | How to make a feature request]]&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#POV-Ray troubleshooting | POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9176</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9176"/>
		<updated>2017-01-23T12:07:29Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Pointed installation troubleshooting to newsgroups given no article exists.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available 'How To' articles. If you add a new article, please list it here.&lt;br /&gt;
&lt;br /&gt;
Please also read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&lt;br /&gt;
&lt;br /&gt;
==Suggestions==&lt;br /&gt;
&lt;br /&gt;
It would be handy if some users co-operated in working out a 'wishlist' of articles and a hierarchy for them, and then created the links to the empty pages from this page.&lt;br /&gt;
&lt;br /&gt;
Discussions should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&lt;br /&gt;
&lt;br /&gt;
==Completed articles==&lt;br /&gt;
&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
*[[HowTo:Use for loop over traditional while loop | How to: Use for loop over traditional while loop]]&lt;br /&gt;
*[https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray How to: Use POV-Ray with Blender] &lt;br /&gt;
&lt;br /&gt;
==Work-in-Progress Articles==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use rainbow | How to: Use rainbow]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Platform-specific tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Mac OS / Mac OS X=====&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Unix=====&lt;br /&gt;
&lt;br /&gt;
====Building Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#General POV-Ray troubleshooting | General POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;br /&gt;
&lt;br /&gt;
==General POV-Ray troubleshooting==&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*Installation Troubleshooting currently via [http://news.povray.org/groups/ newsgroups]. &lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]]&lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests | How to make a feature request]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9175</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9175"/>
		<updated>2017-01-23T11:50:55Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Slight change in header arrangement.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available 'How To' articles. If you add a new article, please list it here.&lt;br /&gt;
&lt;br /&gt;
Please also read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&lt;br /&gt;
&lt;br /&gt;
==Suggestions==&lt;br /&gt;
&lt;br /&gt;
It would be handy if some users co-operated in working out a 'wishlist' of articles and a hierarchy for them, and then created the links to the empty pages from this page.&lt;br /&gt;
&lt;br /&gt;
Discussions should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&lt;br /&gt;
&lt;br /&gt;
==Completed articles==&lt;br /&gt;
&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
*[[HowTo:Use for loop over traditional while loop | How to: Use for loop over traditional while loop]]&lt;br /&gt;
*[https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray How to: Use POV-Ray with Blender] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Work-in-Progress Articles==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use rainbow | How to: Use rainbow]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Platform-specific tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Mac OS / Mac OS X=====&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Unix=====&lt;br /&gt;
&lt;br /&gt;
====Building Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#General POV-Ray troubleshooting | General POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;br /&gt;
&lt;br /&gt;
==General POV-Ray troubleshooting==&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*[[Installation#Troubleshooting | Installation Troubleshooting]]&lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]] &lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests | How to make a feature request]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9174</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=9174"/>
		<updated>2017-01-23T11:45:47Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Added link to Blender POV-Ray page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available 'How To' articles. If you add a new article, please list it here.&lt;br /&gt;
&lt;br /&gt;
Please also read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&lt;br /&gt;
&lt;br /&gt;
==Suggestions==&lt;br /&gt;
&lt;br /&gt;
It would be handy if some users co-operated in working out a 'wishlist' of articles and a hierarchy for them, and then created the links to the empty pages from this page.&lt;br /&gt;
&lt;br /&gt;
Discussions should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&lt;br /&gt;
&lt;br /&gt;
==Completed articles==&lt;br /&gt;
&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
*[[HowTo:Use for loop over traditional while loop | How to: Use for loop over traditional while loop]]&lt;br /&gt;
*[https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Render/POV-Ray How to: Use POV-Ray with Blender] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Work-in-Progress Articles==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use rainbow | How to: Use rainbow]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Platform-specific tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Mac OS / Mac OS X=====&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Unix=====&lt;br /&gt;
&lt;br /&gt;
====Building Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#General POV-Ray troubleshooting | General POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;br /&gt;
&lt;br /&gt;
====General POV-Ray troubleshooting====&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*[[Installation#Troubleshooting | Installation Troubleshooting]]&lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]] &lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests|How to make a feature request]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=9173</id>
		<title>HowTo:Known Issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=9173"/>
		<updated>2017-01-23T11:39:22Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding known issue for assumed_gamma 1 and .gray operation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Known Issues===&lt;br /&gt;
&amp;lt;p&amp;gt;Quick list of general &amp;lt;em&amp;gt;known issues&amp;lt;/em&amp;gt; with the &amp;lt;em&amp;gt;version 3.7&amp;lt;/em&amp;gt;, the &amp;lt;em&amp;gt;3.7.1&amp;lt;/em&amp;gt; pre-release and the current master branch(3.7.2):&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unix users. Due to problems with &amp;lt;em&amp;gt;X11&amp;lt;/em&amp;gt; window libraries, some special command line parameters, such as -geometry, are not available. These were previously enabled via X11 itself. However, a preview display can still be enabled if building from source and the optional [http://www.libsdl.org SDL Simple Directmedia Layer (V1.2)] development library is available to link against.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;While utf-8 support is available in scene files, there are still issues with file names using non-ASCII characters. Meaning a user running in utf-8 or equivalent must take care to use only ASCII characters for all scene related file and directory names. See: [https://github.com/POV-Ray/povray/issues/152 github issue 152]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Agressive Anti-Aliasing (AA) usually addresses bright and dark speckles sometimes seen with media where rays glance - tangentially - to a mathematical surface in a way which confuses interval determination for sampling. Further, while using 'sturm on' is usually a help, it tends to make such media speckling worse. Search the newsgroups for more detail.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The internal .gray | .grey, color to gray conversion is not adjusted for assumed_gamma as the current conversion was set up for other than the recommended assumed_gamma 1 setting. See the newsgroup discussion at: [http://news.povray.org/povray.general/thread/%3C58800d3c%241%40news.povray.org%3E/ &amp;quot;Assumed_gamma and .gray&amp;quot;]. The following macro, as suggested in the news thread, can be used by assumed_gamma 1 users: &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#macro DotGray (Color)&lt;br /&gt;
  #local C = color Color;&lt;br /&gt;
  (0.2126 * C.red + 0.7152 * C.green + 0.0722 * C.blue) // ITU-R BT.709&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The developer's issue tracking can be found at [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile&amp;diff=9172</id>
		<title>User:Wfpokorny/DensityFile</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile&amp;diff=9172"/>
		<updated>2017-01-19T13:36:09Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Playpen status updates.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Patterns]]&lt;br /&gt;
{{#indexentry:density_file, keyword}}&lt;br /&gt;
{{#indexentry:density_file, pattern}}&lt;br /&gt;
{{#indexentry:keyword, density_file}}&lt;br /&gt;
{{#indexentry:pattern, density_file}} &lt;br /&gt;
{{#indexentry:df3, density_file}}&lt;br /&gt;
{{#indexentry:keyword, df3}} &lt;br /&gt;
{{#indexentry:interpolate, density_file}}&lt;br /&gt;
{{#indexentry:keyword, interpolate}} &lt;br /&gt;
{{#indexentry:df3}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note!''' While the following density_file (.df3) pattern documentation is often valid with respect to the current 3.7.0 forms of df3 value interpolation, it is written as if the additional interpolation modes proposed in  https://github.com/wfpokorny/povray/tree/feature/newDensityPatternInterpolations have been adopted.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note!''' After some discussion it's been decided the 'assist' interpolation modes 6-12 will be dropped for methods already supported. Wiki edits are mostly complete to match and the source code has been updated.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
= Density File Pattern =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The density_file pattern is a 3-D bitmap pattern that occupies a unit cube from location &amp;lt;0,0,0&amp;gt; to &amp;lt;1,1,1&amp;gt;.  The data file is a raw binary file format created for POV-Ray called the df3 format.  This pattern was originally created for use with halo or media, but it may be used anywhere a pattern may be used.  The core syntax whether used in a normal, pattern or pigment block is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;density_file df3 [file name] [interpolate Type]&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
where the file name would be placed in double quotes and the interpolation type would be an integer value 0 through 5. For example:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;density_file df3 &amp;quot;star.df3&amp;quot; 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The general forms for each of the normal, pattern and pigment blocks are: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
normal {&lt;br /&gt;
  density_file df3 [filename] [,Bump_Size]&lt;br /&gt;
  [interpolate Type]&lt;br /&gt;
  [NORMAL_MODIFIERS...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where Bump_Size is an optional float value,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pattern {&lt;br /&gt;
  density_file df3 [filename] [interpolate Type]&lt;br /&gt;
  [PATTERN_MODIFIERS...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pigment {&lt;br /&gt;
  density_file df3 [filename] [interpolate Type]&lt;br /&gt;
  [PIGMENT_MODIFIERS...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The df3 file format ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The df3 format consists of a 6 byte header of three 16-bit, unsigned integers with high order bytes first (big-endian order). These three values give the x,y,z size of the data in voxels.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The header is followed by x*y*z unsigned, big-endian encoded, integers with resolutions of 8, 16 or 32 bits. The resolution of the data is determined by the size of the df3 file. That is, if the file - minus the header - is twice as long as an 8 bit file, it is taken to contain 16 bit data. If it is four times as long, it is taken to contain 32 bit data.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How the density_file pattern works ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The density pattern occupies the unit cube &amp;lt;0,0,0&amp;gt; to &amp;lt;1,1,1&amp;gt; regardless of the x, y, z dimensions in voxels. It remains at 0.0 for all areas beyond the unit cube. Data values in the ranges of 0 to 255 (8 bit/1 byte), 0 to 65535 (16 bit/2 bytes) and 0 to 4294967295 (32 bit/4 bytes), are scaled by the various interpolation methods to a float value in the range 0.0 to 1.0. The larger 2 byte and 4 byte depths providing better resolution.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Interpolation options. ===&lt;br /&gt;
&amp;lt;p&amp;gt;There are currently 6 data interpolation types numbered 0 through 5, with the types larger than 2 being available only in releases 3.7.1 and later. If nothing is specified via the interpolate keyword, the default is 0 which does no interpolation - meaning for a given location in the unit cube, the 0.0 to 1.0 value of the containing voxel is returned. The other interpolation methods available are:&amp;lt;/p&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Tri-linear. Similar to two dimensional image method, but for three dimensions. &lt;br /&gt;
&amp;lt;li&amp;gt; Tri-cubic.  Similar to two dimensional image method.&lt;br /&gt;
&amp;lt;li&amp;gt; Weak exponential blobbing of defined voxels in 4x4x4 local sub regions. &lt;br /&gt;
&amp;lt;li&amp;gt; Moderate  exponential blobbing of defined voxels in 6x6x6 local sub regions. &lt;br /&gt;
&amp;lt;li&amp;gt; Strong exponential blobbing of defined voxels in 8x8x8 local sub regions.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;If an interpolate value not supported is specified, the interpolation defaults to tri-cubic interpolation, 2, in POV-Ray versions 3.6 and later.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Exponential blobbing interpolations. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Exponential blobbing techniques in POV-Ray date to the introduction of isosurface objects. The method here borrows from one common technique with the form:&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;1/exp((function's value)*(blobbing strength))&amp;lt;/pre&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;As implemented, for each evaluated point in the unit cube, the code sums the result of the equation:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(1/exp(pow(point_to_voxel_distance,2)*(internalTuningBias/voxel_value))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;for all adjacent df3 values &amp;gt;0 within the NxNxN sub-cube around the evaluated point. Resulting values &amp;gt;1 are clamped to 1.0. The larger the sub cube, the stronger the blobbing which can be accommodated.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The algorithm has been tuned so 1.0 values for each of the exponential blobbing interpolations just fit within the corresponding sub cube. The blobbing can be adjusted without the need to regenerate a df3 by using the standard pattern wave modifier poly_wave &amp;lt;float&amp;gt;. Poly_wave values &amp;gt;=1.0 should always work and reduce the blobbing. Values &amp;lt; 1.0 increase the blobbing and can cause sub cube overruns. Overruns will appear as discontinuities in the final pattern.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Only interpolation 0 is voxel centered in 3.7.0 and earlier releases. ===&lt;br /&gt;
&amp;lt;p&amp;gt;For version 3.7.0, the interpolations 0 to 2 are shown below in order, left to right, as a pigment on a plane for an 11x11x11 df3 file where a single center voxel has a value of 0.5 while all others are 0.0. The red dots mark the vertices around our center voxel.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_I0thru2_370.png|center|frame|Density_file interpolations for single center voxel as a green pigment on a plane with release 3.7.0.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The tri-linear and tri-cubic interpolations are vertex centered prior to 3.7.1 resulting in a half voxel negative shift in x,y,z .  This shift is perhaps of no consequence if rendering media. It does however matter if, for example, building a df3 based isosurface or when trying to control textures for media for any formed objects using interpolation 0.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Offset tri-linear and tri-cubic results can be centered with a positive translation of one half a voxel size in x,y and z. For the 11x11x11 df3 example use:&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;translate &amp;lt;-0.5+(1/11/2),-0.5+(1/11/2),-0.5+(1/11/2)&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;to get the density_file pattern exactly centered upon the origin. In a function for an isosurface this adjustment to center on the origin would be something like:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;FnctAdjustToCenter(x+0.5-(1/11/2),y+0.5-(1/11/2),z+0.5-(1/11/2))&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Release 3.7.1 makes all interpolations voxel, and so too unit cube, centered. ===&lt;br /&gt;
&amp;lt;p&amp;gt;In addition to adding density_file pattern interpolation modes, 3.7.1 centers all the interpolated results. The 3.7.1 interpolations 0 to 5 are shown in order, left to right, in the following image.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_I0thru5_371.png|center|frame|Density_file interpolations for single center voxel as a green pigment on a plane.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;'''Note.''' Backward, shifted compatibility for the older 1 &amp;amp; 2 methods is available by using interpolations 11 &amp;amp; 12, respectively.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Tri-linear interpolation has creases, tri-cubic interpolation wobbles/rings. ===&lt;br /&gt;
&amp;lt;p&amp;gt;The following figure shows isosurfaces for interpolations 1 through 5, left to right, setting the threshold very near zero to better see the non-zero values returned. The df3 used is a 15x15x15 arrangement where an x,z box has been centered in y and through which there is a y column of &amp;gt;0.0 values. The values for the non-zero voxels in the top row are  0.1 and the bottom row 0.9.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The former better showing the crease effect of tri-linear interpolation, the latter, the ring of tri-cubic interpolation. The tri-cubic mode always wobbles, but the most severe artifacts can be avoided by using values not near 0.0 and 1.0 where pattern clipping occurs.&amp;lt;/p&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_isoBoxOnSpindle.png|center|frame|Density_file interpolations 1-5 for defined voxels arranged as box on spindle.]]&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Lastly, with respect the the ringing of the tri-cubic interpolation, there are at times, additional harmonics as shown at the bottom of the following image which has been gamma adjusted to make this clear. The df3 sets only 3 voxels, here seen as the brighter green rectangles.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_TriCubic2ndRingExample.png|center|frame|Density_file second ring example with tri-cubic interpolation.]]&lt;br /&gt;
&lt;br /&gt;
=== DF3 value and density_file interpolation effects on an isosurface max gradient. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Interpolation methods and df3 values affect the max gradient in isosurface use. For tri-linear and tri-cubic Interpolations 1 and 2, lower values result in lower gradients due the typically longer ramp from the &amp;gt;0 edge to the voxel value used as a threshold. With the exponential blobbing of modes 3, 4 and 5, the lower gradients happen instead at larger voxel values - lower voxel values result in small spheres with much sharper local gradients. Gradients for interpolations 0-5 tend to increase as the df3 file's voxel count increase.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Interpolations 3, 4 and 5 max values always go to 1.0 at any &amp;gt;0.0 voxel center, where interpolations 1 and 2 peak at the voxel's specified &amp;gt;0.0 value.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;''Reported'' maximum gradients for df3 based isosurfaces will often be much higher than what can be used. These higher gradients occur where a ray catches the far corner or edge of the df3-function in a direction more perpendicular to the best overall local gradient.  Note. This far corner, near threshold, gradient effect happens with other patterns too and can often be ignored in practice.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use a buffer of five 0.0 voxels on all sides to avoid density_file edge effects. ===&lt;br /&gt;
&amp;lt;p&amp;gt;While not a hard and fast rule, all the interpolations other than 0, and 6-12, will wrap or repeat values on the sides. The general recommendation of five comes from interpolation five's need for an 8 grid range (4 per side) about any evaluated point - plus a half voxel grid for the internal vertex to voxel center correction of interpolations 1-5. Often smaller buffer amounts can be used.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Below are two images. In the first, the lower-left-forward corner of the df3 has been filled with 0.2 values with all others 0.0. In the second image the top-right-back corner of df3 file has been set to values of 0.2 with all others set to 0.0. Interpolations 0 through 5 are shown left to right in each of these two images as a pigment on an x,y plane at the df3 unit cube's z center.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_LftFrontI0Thru5.png|center|frame|(1) Density_file interpolations 0-5 with defined left, bottom, front voxels.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_RghtBackI0Thru5.png|center|frame|(2) Density_file interpolations 0-5 with defined right, top, back voxels.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;All truncate sharply to 0.0 where values have been run to the unit cube sides. This abrupt change is especially inconvenient for isosurface use, but the hard edge can often be seen in other pattern uses as some artifact.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The tri-linear and tri-cubic interpolations, 1 and 2, wrap side to opposite side in the lower-left-forward side-abutted case shown in the first row. These same interpolations truncate in the rop-right-back side-abutted case shown in the second row.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The exponential blobbing of 3 through 5 all repeat - or add values - at the last voxel position at the sides. This can sometimes be compensated for by lowering the on side and in-corner values.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== df3 file size. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Df3 files can get very large, very quickly given the cubed dimensions. A df3 1000x1000x1000 at 1 byte resolution will take a gigabyte of storage. It practice, aim to reduce the z dimension as much as possible letting the density_file pattern scale up to the unit cube. Later scale the unit cube dimension to the desired final size.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== 3D isosurface extrusion of image via shallow in z, density_file pattern. ====&lt;br /&gt;
&amp;lt;p&amp;gt;An example compressing the df3 in one dimension comes naturally when the density_file pattern is used for extrusion of a 2D image into 3D shape. The outline for such an extrusion is shown in the following code snippets with a resulting image.  A 500x500x13 deep df3 of the red in a 2D image, at left below, is created with the following code:&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
#include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled df3 macros &amp;amp; functions.&lt;br /&gt;
&lt;br /&gt;
#declare ImageFileNamesAry=array[3] {&lt;br /&gt;
   &amp;quot;BlackRedLettersIn.png&amp;quot;,&lt;br /&gt;
   &amp;quot;BlackRedLettersIn.png&amp;quot;,&lt;br /&gt;
   &amp;quot;BlackRedLettersIn.png&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
//                                  Red     &lt;br /&gt;
ConvertImagesToDF3(500,500,0.0,1.0,&amp;lt;1,0,0&amp;gt;,0.2,1,ImageFileNamesAry,&amp;quot;BlackRedLetters.df3&amp;quot;,8,5)&lt;br /&gt;
&lt;br /&gt;
#error &amp;quot;Stopping after parse stage for df3 creation from image.&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The include file arrays.inc is already part of POV-Ray and the arraycoupleddf3s.inc file is given in the examples section. Once the df3 representation of the 2D image exists, the following code is used to create the function for the isosurface text using blobbing interpolation 5.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#declare Fnct00 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;BlackRedLetters.df3&amp;quot; interpolate 5&lt;br /&gt;
        translate -0.5 // Center about origin for isosurface&lt;br /&gt;
        scale &amp;lt;1,1,1/((500+10)/(3+10))&amp;gt;&lt;br /&gt;
        warp { turbulence &amp;lt;0.015,0.015,0&amp;gt; octaves 6 omega 0.43 lambda 6 }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
#declare Fnct01 = function (x,y,z) {&lt;br /&gt;
    0.025-Fnct00(x,y,z)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Df3_BlackRedLetters.png|center|frame|Density_file as isosurface extrusion of 2D image while selecting color for extrusion.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In the function declaration, Fnct00, the pattern is centered about the origin with a translate. The z dimension, which would otherwise render stretched, is scaled back to a desired size. The turbulence warp in x and y roughens up the 3D text sides leaving the front and back smooth. The +10 accounts for the the buffer of 0.0 values about the 3 deep, in z, df3 data.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Function Fnct01 gets used in the isosurface  and the general form here works more or less universally with the density_file pattern when the isosurface threshold is 0.0. '''Note.''' While a couple of functions are required for the isosurface set up, the standard pattern modifiers do most of the work.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Performance of various interpolations. ===&lt;br /&gt;
&amp;lt;p&amp;gt;Generally the internal pattern performance  in terms of the interpolation numbers runs 0 --&amp;gt; 1 --&amp;gt; 3 --&amp;gt; 2 --&amp;gt; 4 --&amp;gt; 5 from fastest to slowest with a strong dependence on df3 data density, values and ultimate pattern use. As pigments all perform well. Media and isosurface use will amplify the performance differences. With respect to isosurfaces and remembering how the gradients change, it happens for larger df3 values, interpolation 5 can be the fastest because the isosurface gradients are in that case the most gradual.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
=== Tip. Using frequency 0 for better performance. ===&lt;br /&gt;
&amp;lt;p&amp;gt;The density_file pattern like many other patterns supports the frequency, phase and waveform modifiers. If these are not in use, some of the code which does the wave related adjustments can be bypassed by setting the frequency to 0. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#declare Fnct00 = function {&lt;br /&gt;
    pattern { density_file df3 &amp;quot;test.df3&amp;quot; interpolate 1 frequency 0 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The performance gains are typically less than 2 percent per density_file and there is one side effect important to maps. The wave code  bypassed reduces all values downward by a very small amount to keep values from actually reaching 1.0. Maps wrap back to zero at 1.0 and because users often code maps as [0-1] this wrap might lead to confusion.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The 1.0 value isn't typically an issue for isosurfaces and, if you know the df3 or other pattern as interpolated never reaches 1.0, the frequency 0 trick can be used.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional examples and arraycoupleddf3s.inc ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;POV-Ray ships with one example df3 file in the include directory called spiral.df3 which is used by two sample scenes in: scenes -&amp;gt; textures -&amp;gt; patterns -&amp;gt; densfile.pov and scenes -&amp;gt; interior -&amp;gt; media -&amp;gt; galaxy.pov.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/arraycoupleddf3s|arraycoupleddf3s.inc]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/WriteDF3Example|Creating a df3 file with arrays.inc's ARRAYS_WriteDF3 macro]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/df3XYZsizeBashExample|Simple bash script to query x, y, z ranges of an existing df3 file.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/DepthMap64BitDf3RsltStoreExample|Orthogonal depth map with trace. Storing +-64 bit values in a df3 file.]]  &lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/BlackHoleLatheGreebling|Lathe like greebling using density_file pattern with black_hole warps.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/BlackHoleFlower|Flower formed using multiple black_hole warps on df3, density_file pattern.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/TubulenceWarpsExamples|Various turbulence warps applied to simple axis crossing df3.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/FunctionToDF3|Converting functions and objects to df3s with FunctionToDF3 macro.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/FillingVolumeWithShapes|Filling a volume with many individually textured shapes.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/Bowl|Isosurace lathe where base df3 created from array of strings.]]&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/DensityFile/Twist|Place holder for twist example. Perhaps not worth keeping without interpolations 9,11-12?]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=9171</id>
		<title>User:Wfpokorny</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=9171"/>
		<updated>2017-01-19T13:32:22Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Playpen status updates.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=The Playpen= &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A bit of documentation for items currently in my POV-Ray playpen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Branches on github==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;I'm maintaining my POV-Ray patches as un-merged github branches to make it easier for me to keep them current&lt;br /&gt;
with the POV-Ray master branch. In my own space I occasionally create my own version of POV-Ray which includes &lt;br /&gt;
just the branches/patches of mine and others that I want.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pointers to my active branches follow with the thought some might be generally useful to others in rolling &lt;br /&gt;
their own versions of POV-Ray.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Tune Blob Accuracy===&lt;br /&gt;
&amp;lt;p&amp;gt;This just tweaks an internal value in blob.cpp that in my testing of blobs over the past year I've found works better. &lt;br /&gt;
I will eventually package up all my blob test cases and open a github issue/pull request, but not there today...&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git tune/blob_accuracy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Density File Pattern Updates===&lt;br /&gt;
&amp;lt;p&amp;gt;A three pronged effort to improve .df3 density file pattern support.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Improved user documentation. &lt;br /&gt;
&amp;lt;li&amp;gt;Additional array coupled df3 creation and read support. Write support exists.  &lt;br /&gt;
&amp;lt;li&amp;gt;Fixes and extensions for the density file pattern. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See: [[User:Wfpokorny/DensityFile| Density File Pattern - proposed documentation updates.]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newDensityPatternInterpolations&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Addition black_hole warp type(s)===&lt;br /&gt;
&amp;lt;p&amp;gt;The black_hole warp in master today has just type 0 support so the type is not really documented though the parser picks it up. Further the default sucking black_hole is clamped in movement and it sometimes reaches outside the black_hole range making for interesting effects I've used, but certainly confusing results for any novice. This patch adds a type 1 version of the black_hole warp which duplicates exactly the pushing/inverted form of type 0, but for the sucking form it implements a form more like what folks would expect. The default with this patch is still type 0 so type 1 needs to be specified to use the new type.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newBlack_holeTypes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #86 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Non-portable 32 bit DF3 write capability===&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request for this rejected as not portable - and I admit I don't understand the particulars. The feature works for me on linux though and I find it useful so I maintain it for my use.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/nonPortable32bitDF3Write&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Both image_map and pigment_map support in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;Lets one use both image_map and pigment_map in density{} as a way to quickly get full color density/media.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/pigment_map_wDensity&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Unix file and console column wrap control by environment variable===&lt;br /&gt;
&amp;lt;p&amp;gt;Enabling control of the wrapping via environment variables of&lt;br /&gt;
POVRAY_CONSOLE_COLUMNS for the console and POVRAY_TEXTSTREAM_COLUMNS&lt;br /&gt;
for files and console.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Note. There is an active pull req #117 approaching this issue in another way.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/unixConsoleFileColumnWrapControl&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Fix. Rejected parser check for subsurface crash/non-function issue #122===&lt;br /&gt;
&amp;lt;p&amp;gt;Missing or mis-placed subsurface definition in global block can cause crash or give the indication the&lt;br /&gt;
subsurface feature is working when it is not. I run with this parser hack as protection pending &lt;br /&gt;
a more complete fix.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/subsurfaceCrash_Issue122_FS306&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==How to merge branches into a custom version of POV-Ray==&lt;br /&gt;
&amp;lt;p&amp;gt;Given you've already installed git and have an active local fork of POV-Ray master branches can be merged on linux with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout master &lt;br /&gt;
git branch povraySpecial&lt;br /&gt;
git checkout povraySpecial&lt;br /&gt;
git pull https://github.com/wfpokorny/povray.git fix/unixSimpleDirectMediaLayerMessages&lt;br /&gt;
... Usual prebuild.sh, configure and make ... &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incomplete section==&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/HowTo| How to get sub page...]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9169</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9169"/>
		<updated>2017-01-08T14:52:59Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Removed question on potential documentation... Apparently me confused.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency. [[Reference:Finish|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions. [[Reference:User Defined Pattern|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a &amp;lt;code&amp;gt;blob&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.[[Reference:Potential Pattern|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt; [[Reference:Bitmap Modifiers#The map_type Option|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps. [[Reference:Crackle Pattern|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients. [[Reference:Color Map|See-It]] and [[Reference:Pigment Map|See-Also]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism. [[Reference:Finish|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces. [[Reference:Isosurface|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus. [[Reference:Torus|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments.&lt;br /&gt;
[[Reference:Declare and Local Directives|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Light sources distance-based fading can now be set to obey an inverse-power law at all distances [[Reference:Light Source#Light Fading|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt; [[Reference:Colors.inc#Color_macros|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard [[Reference:Colors_ral.inc|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;em&amp;gt;Chris says only update copyright date when file otherwise changes.&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?  &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;br&amp;gt;&amp;lt;em&amp;gt;The term &amp;quot;IFF&amp;quot; does not seem to be mentioned anywhere in the docs (this is an input-only format), just the keyword, which wasn't chaned. (CLi)&amp;lt;/em&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;br&amp;gt;&amp;lt;em&amp;gt;Already documented. May need to be marked as {{Change}}. [[Reference:Strings#String_Literals|See-It]] (CLi)&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Dithering is now fully supported for Radiance HDR output files. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Trailing whitespace in INI files no longer causes a warning. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Animation status messages now include the nominal frame number. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} POV-Ray for Windows now reports file names and line numbers of warnings. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Color Map|Color Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Pigment Map|Pigment Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Average Pattern|Average Pattern]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Normal Map|Normal Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Slope Map|Slope Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Patterned Textures|Patterned Textures]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Density#Density and Density Maps|Density and Density Maps]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The number of components per blob is no longer artificially limited. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Nothing with ovus or lemon. Add to primativ.pov perhaps?&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Rename primativ.pov to primative.pov or delete and create individual files?&amp;lt;/li&amp;gt;   &lt;br /&gt;
  &amp;lt;li&amp;gt;portfolio/allobjects.pov out of date.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 2013.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Multilinks===&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Just came across a nest of multilinks on [[Reference:Language_Directives]], thought you'd like to know; would have eliminated them in passing, but since you say that triggers some performance-hogging process I won't touch them. (CLi)&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9168</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9168"/>
		<updated>2017-01-08T14:10:54Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Question on potential pattern documentation versus actual behavior.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency. [[Reference:Finish|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions. [[Reference:User Defined Pattern|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a &amp;lt;code&amp;gt;blob&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.[[Reference:Potential Pattern|See-It]]&lt;br /&gt;
&amp;lt;p&amp;gt;??? Just looked at this page and I'm not remembering the threshold value as a float and polarity as a boolean, but rather visa-versa. I'll go dig - WFP.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt; [[Reference:Bitmap Modifiers#The map_type Option|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps. [[Reference:Crackle Pattern|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients. [[Reference:Color Map|See-It]] and [[Reference:Pigment Map|See-Also]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism. [[Reference:Finish|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces. [[Reference:Isosurface|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus. [[Reference:Torus|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments.&lt;br /&gt;
[[Reference:Declare and Local Directives|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Light sources distance-based fading can now be set to obey an inverse-power law at all distances [[Reference:Light Source#Light Fading|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt; [[Reference:Colors.inc#Color_macros|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard [[Reference:Colors_ral.inc|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;em&amp;gt;Chris says only update copyright date when file otherwise changes.&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?  &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;br&amp;gt;&amp;lt;em&amp;gt;The term &amp;quot;IFF&amp;quot; does not seem to be mentioned anywhere in the docs (this is an input-only format), just the keyword, which wasn't chaned. (CLi)&amp;lt;/em&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;br&amp;gt;&amp;lt;em&amp;gt;Already documented. May need to be marked as {{Change}}. [[Reference:Strings#String_Literals|See-It]] (CLi)&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Dithering is now fully supported for Radiance HDR output files. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Trailing whitespace in INI files no longer causes a warning. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Animation status messages now include the nominal frame number. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} POV-Ray for Windows now reports file names and line numbers of warnings. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Color Map|Color Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Pigment Map|Pigment Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Average Pattern|Average Pattern]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Normal Map|Normal Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Slope Map|Slope Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Patterned Textures|Patterned Textures]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Density#Density and Density Maps|Density and Density Maps]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The number of components per blob is no longer artificially limited. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Nothing with ovus or lemon. Add to primativ.pov perhaps?&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Rename primativ.pov to primative.pov or delete and create individual files?&amp;lt;/li&amp;gt;   &lt;br /&gt;
  &amp;lt;li&amp;gt;portfolio/allobjects.pov out of date.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 2013.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Multilinks===&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Just came across a nest of multilinks on [[Reference:Language_Directives]], thought you'd like to know; would have eliminated them in passing, but since you say that triggers some performance-hogging process I won't touch them. (CLi)&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9076</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9076"/>
		<updated>2016-12-19T16:45:04Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Updated copyright updates per Chris's direction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions. [[Reference:User Defined Pattern|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a &amp;lt;code&amp;gt;blob&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.[[Reference:Potential Pattern|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt; [[Reference:Bitmap Modifiers#The map_type Option|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces. [[Reference:Isosurface|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;em&amp;gt;Chris says only update copyright date when file otherwise changes.&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?  &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Dithering is now fully supported for Radiance HDR output files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Trailing whitespace in INI files no longer causes a warning&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Animation status messages now include the nominal frame number&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray for Windows now reports file names and line numbers of warnings&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Color Map|Color Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Pigment Map|Pigment Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Average Pattern|Average Pattern]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Normal Map|Normal Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Slope Map|Slope Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Patterned Textures|Patterned Textures]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Density#Density and Density Maps|Density and Density Maps]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The number of components per blob is no longer artificially limited. [[Reference:Blob|Over-Here]]&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;em&amp;gt;I don't think any documentation is necessary except in the &amp;quot;what's new section&amp;quot;, as the upper limit never seems to have been officially documented in the first place. (CLi)&amp;lt;/em&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Nothing with ovus or lemon. Add to primativ.pov perhaps?&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Rename primativ.pov to primative.pov or delete and create individual files?&amp;lt;/li&amp;gt;   &lt;br /&gt;
  &amp;lt;li&amp;gt;portfolio/allobjects.pov out of date.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 2013.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9075</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9075"/>
		<updated>2016-12-19T15:33:31Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Minor updates to Scene File Checklist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions. [[Reference:User Defined Pattern|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a &amp;lt;code&amp;gt;blob&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.[[Reference:Potential Pattern|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt; [[Reference:Bitmap Modifiers#The map_type Option|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces. [[Reference:Isosurface|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?  &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Dithering is now fully supported for Radiance HDR output files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Trailing whitespace in INI files no longer causes a warning&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Animation status messages now include the nominal frame number&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray for Windows now reports file names and line numbers of warnings&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Color Map|Color Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Pigment Map|Pigment Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Average Pattern|Average Pattern]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Normal Map|Normal Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Slope Map|Slope Map]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Patterned Textures|Patterned Textures]]&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;[[Reference:Density#Density and Density Maps|Density and Density Maps]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The number of components per blob is no longer artificially limited. [[Reference:Blob|Over-Here]]&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;em&amp;gt;I don't think any documentation is necessary except in the &amp;quot;what's new section&amp;quot;, as the upper limit never seems to have been officially documented in the first place. (CLi)&amp;lt;/em&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Nothing with ovus or lemon. Add to primativ.pov perhaps?&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Rename primativ.pov to primative.pov or delete and create individual files?&amp;lt;/li&amp;gt;   &lt;br /&gt;
  &amp;lt;li&amp;gt;portfolio/allobjects.pov out of date.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 2013.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Update scene and include directory copyright dates&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9059</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9059"/>
		<updated>2016-12-18T14:36:52Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: added code marks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a &amp;lt;code&amp;gt;blob&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces. [[Reference:Isosurface|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?  &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Dithering is now fully supported for Radiance HDR output files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Trailing whitespace in INI files no longer causes a warning&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Animation status messages now include the nominal frame number&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray for Windows now reports file names and line numbers of warnings&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries. [[Reference:Color Map|See-It]] and [[Reference:Pigment Map|See-Also]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The number of components per blob is no longer artificially limited. [[Reference:Blob|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Nothing with ovus or lemon. Add to primativ.pov perhaps?&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Rename primativ.pov to primative.pov or delete and create individual files?&amp;lt;/li&amp;gt;   &lt;br /&gt;
  &amp;lt;li&amp;gt;portfolio/allobjects.pov out of date.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 20123.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9057</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=9057"/>
		<updated>2016-12-18T14:19:31Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding items to Scene File Checklist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a blob or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces. [[Reference:Isosurface|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?  &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Dithering is now fully supported for Radiance HDR output files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Trailing whitespace in INI files no longer causes a warning&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Animation status messages now include the nominal frame number&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray for Windows now reports file names and line numbers of warnings&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries. [[Reference:Color Map|See-It]] and [[Reference:Pigment Map|See-Also]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The number of components per blob is no longer artificially limited. [[Reference:Blob|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Nothing with ovus or lemon. Add to primativ.pov perhaps?&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Rename primativ.pov to primative.pov or delete and create individual files?&amp;lt;/li&amp;gt;   &lt;br /&gt;
  &amp;lt;li&amp;gt;portfolio/allobjects.pov out of date.&amp;lt;/li&amp;gt; &lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 20123.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8975</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8975"/>
		<updated>2016-12-16T13:35:09Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Thoughts on X11 unix documentation. Questioning vga/svga support and docs.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a blob or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces to choose whether function values above the threshold should indicate the inside or outside. [[Reference:Isosurface|Over-Here]]&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p&amp;gt;By default, the inside of an &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; is defined as the set of all points inside the &amp;lt;code&amp;gt;contained_by&amp;lt;/code&amp;gt; shape where the function values are below the threshold. Since 3.7.1, this can be changed via the {{New}} &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; keyword: Specifying a positive setting or &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; will instead cause function values &amp;lt;em&amp;gt;above&amp;lt;/em&amp;gt; the threshold to be considered inside. Specifying a negative setting or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; will give the default behavior.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?  &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Dithering is now fully supported for Radiance HDR output files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Trailing whitespace in INI files no longer causes a warning&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Animation status messages now include the nominal frame number&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray for Windows now reports file names and line numbers of warnings&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries. [[Reference:Color Map|See-It]] and [[Reference:Pigment Map|See-Also]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The number of components per blob is no longer artificially limited. [[Reference:Blob|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 20123.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8974</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8974"/>
		<updated>2016-12-16T13:29:28Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Note I forgot yesterday on Unix SDL change.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a blob or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces to choose whether function values above the threshold should indicate the inside or outside. [[Reference:Isosurface|Over-Here]]&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p&amp;gt;By default, the inside of an &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; is defined as the set of all points inside the &amp;lt;code&amp;gt;contained_by&amp;lt;/code&amp;gt; shape where the function values are below the threshold. Since 3.7.1, this can be changed via the {{New}} &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; keyword: Specifying a positive setting or &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; will instead cause function values &amp;lt;em&amp;gt;above&amp;lt;/em&amp;gt; the threshold to be considered inside. Specifying a negative setting or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; will give the default behavior.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Noteworthy Improvements====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Dithering is now fully supported for Radiance HDR output files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Trailing whitespace in INI files no longer causes a warning&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Animation status messages now include the nominal frame number&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray for Windows now reports file names and line numbers of warnings&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Radiosity can now honor the &amp;lt;code&amp;gt;brilliance&amp;lt;/code&amp;gt; setting of a surface&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries. [[Reference:Color Map|See-It]] and [[Reference:Pigment Map|See-Also]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The number of components per blob is no longer artificially limited. [[Reference:Blob|Over-Here]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 20123.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8945</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8945"/>
		<updated>2016-12-15T11:22:23Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Performance degrade admission question.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a blob or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces to choose whether function values above the threshold should indicate the inside or outside. [[Reference:Isosurface|Over-Here]]&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p&amp;gt;By default, the inside of an isosurface is defined as the set of all points inside the `contained_by` shape where the function values are below the threshold.&lt;br /&gt;
    Since 3.7.1, this can be changed via the {{New}} &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; keyword: Specifying a positive setting or &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; will instead cause function values&lt;br /&gt;
    &amp;lt;em&amp;gt;above&amp;lt;/em&amp;gt; the threshold to be considered inside. Specifying a negative setting or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; will give the default behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise).&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 20123.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Admissions...===&lt;br /&gt;
&amp;lt;p&amp;gt;Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48 &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8944</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8944"/>
		<updated>2016-12-15T11:18:08Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Clarification on Unix SDL console message update.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a blob or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces to choose whether function values above the threshold should indicate the inside or outside. [[Reference:Isosurface|Over-Here]]&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p&amp;gt;By default, the inside of an isosurface is defined as the set of all points inside the `contained_by` shape where the function values are below the threshold.&lt;br /&gt;
    Since 3.7.1, this can be changed via the {{New}} &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; keyword: Specifying a positive setting or &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; will instead cause function values&lt;br /&gt;
    &amp;lt;em&amp;gt;above&amp;lt;/em&amp;gt; the threshold to be considered inside. Specifying a negative setting or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; will give the default behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise).&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 20123.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8943</id>
		<title>User talk:Jholsenback</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User_talk:Jholsenback&amp;diff=8943"/>
		<updated>2016-12-15T11:01:32Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Made a start on the Scene file checklist. Added misc item for copyright dates.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===3.7.1 Changes Checklist===&lt;br /&gt;
&amp;lt;p&amp;gt;The following is a check list of the changes that need to be documented prior to version 3.7.1 release.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====New Features====&lt;br /&gt;
=====Materials=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new finish parameter &amp;lt;code&amp;gt;use_alpha&amp;lt;/code&amp;gt; has been added to suppress highlights and reflections depending on pigment transparency.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new special pigment pattern &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added to define the pigment color directly in terms of a set of functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new pattern &amp;lt;code&amp;gt;potential&amp;lt;/code&amp;gt; has been added to define a pattern based on the &amp;lt;em&amp;gt;potential&amp;lt;/em&amp;gt; field of a blob or &amp;lt;code&amp;gt;isosurface&amp;lt;/code&amp;gt; object.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;map_type&amp;lt;/code&amp;gt; keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as &amp;lt;code&amp;gt;type 7&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Native support for repetition has been added to the &amp;lt;code&amp;gt;crackle&amp;lt;/code&amp;gt; pattern to avoid the discontinuities in the pattern caused by repeat warps.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The torus syntax has been extended to give more control over the spindle in a self-intersecting torus&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Geometric Primitives=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} UV mapping support has been added to cones and cylinders. [[Reference:UV Mapping#Supported Objects|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new parameter &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; has been added to isosurfaces to choose whether function values above the threshold should indicate the inside or outside. [[Reference:Isosurface|Over-Here]]&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p&amp;gt;By default, the inside of an isosurface is defined as the set of all points inside the `contained_by` shape where the function values are below the threshold.&lt;br /&gt;
    Since 3.7.1, this can be changed via the {{New}} &amp;lt;code&amp;gt;polarity&amp;lt;/code&amp;gt; keyword: Specifying a positive setting or &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; will instead cause function values&lt;br /&gt;
    &amp;lt;em&amp;gt;above&amp;lt;/em&amp;gt; the threshold to be considered inside. Specifying a negative setting or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; will give the default behaviour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new geometric primitive &amp;lt;code&amp;gt;lemon&amp;lt;/code&amp;gt; has been added. [[Reference:Lemon|See-It]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Scene Description Language, Options and INI settings=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for variable-size arrays has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new data container &amp;lt;code&amp;gt;dictionary&amp;lt;/code&amp;gt; has been added to support structured storage of data&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} &amp;lt;em&amp;gt;Pseudo-dictionaries&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;local&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;global&amp;lt;/code&amp;gt; have been added, allowing to specifically access local or global identifiers respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The &amp;lt;code&amp;gt;max_extent&amp;lt;/code&amp;gt; function as used to determine the size of an image map in pixels can now also be used on normal maps and density files&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;All instances of &amp;lt;code&amp;gt;gray&amp;lt;/code&amp;gt; in keywords or INI file options can now alternatively be spelled &amp;lt;code&amp;gt;grey&amp;lt;/code&amp;gt;. Previously this was only the case inside function definitions where it applied only to the &amp;lt;code&amp;gt;.gray&amp;lt;/code&amp;gt; color pseudo-component&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new inbuilt constant &amp;lt;code&amp;gt;tau&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;#declare&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;#local&amp;lt;/code&amp;gt; syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The macro syntax has been extended to allow for &amp;lt;code&amp;gt;optional&amp;lt;/code&amp;gt; parameters&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} The creation of a log for the &amp;lt;code&amp;gt;+C&amp;lt;/code&amp;gt; render abort-continue feature can now be suppressed using &amp;lt;code&amp;gt;-CC&amp;lt;/code&amp;gt; to save disk space&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} A new function-based user-defined camera type &amp;lt;code&amp;gt;user_defined&amp;lt;/code&amp;gt; has been added&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Light sources distance-based fading can now be set to obey an inverse-power law at all distances&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;CIE L*a*b* conversion macros have been added to &amp;lt;em&amp;gt;colors.inc&amp;lt;/em&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A new include file &amp;lt;em&amp;gt;colors_ral.inc&amp;lt;/em&amp;gt; has been added containing predefined colors according to the RAL Classic standard&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Thinking all copyright dates in code, scenes, documentation should be updated to 2016 (or 2017) for beta release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Changed Behavior====&lt;br /&gt;
=====Image Files=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the &amp;lt;code&amp;gt;gamma&amp;lt;/code&amp;gt; input file parameter or &amp;lt;code&amp;gt;File_Gamma&amp;lt;/code&amp;gt; INI setting, respectively&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;em&amp;gt;Compression&amp;lt;/em&amp;gt; setting now affects more file types: Specifying &amp;lt;code&amp;gt;Compression=1&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;T&amp;lt;/code&amp;gt; (Targa) will now generate compressed Targa (same as file type &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;), and explicitly specifying &amp;lt;code&amp;gt;Compression=0&amp;lt;/code&amp;gt; with file type &amp;lt;code&amp;gt;P&amp;lt;/code&amp;gt; (Netpbm PPM/PGM) will generate &amp;lt;em&amp;gt;plain&amp;lt;/em&amp;gt; (ASCII) Netpbm rather than&lt;br /&gt;
    &amp;lt;em&amp;gt;raw&amp;lt;/em&amp;gt; (binary)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; or &amp;lt;em&amp;gt;non-premultiplied&amp;lt;/em&amp;gt; alpha mode, rather than blindly presuming &amp;lt;code&amp;gt;premultiplied&amp;lt;/code&amp;gt; alpha&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The interaction of &amp;lt;code&amp;gt;transmit all&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;filter all&amp;lt;/code&amp;gt; with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later)&amp;lt;/code&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The image file format previously referred to as &amp;lt;em&amp;gt;IFF&amp;lt;/em&amp;gt; (now more precisely referred to as &amp;lt;em&amp;gt;IFF-ILBM&amp;lt;/em&amp;gt;) is now associated with the &amp;lt;code&amp;gt;.lbm&amp;lt;/code&amp;gt; file extension in addition to the &amp;lt;code&amp;gt;.iff&amp;lt;/code&amp;gt; extension&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
=====Miscellaneous=====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;On Unix with Simple DirectMedia Layer (SDL) enabled the &amp;lt;em&amp;gt;p&amp;lt;/em&amp;gt; key can now be used to pause and un-pause a render&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;The &amp;lt;code&amp;gt;version&amp;lt;/code&amp;gt; pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, &amp;lt;em&amp;gt;except&amp;lt;/em&amp;gt; when used in a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive, in which case the behavior remains unchanged. The requirement to start each scene with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file &amp;lt;em&amp;gt;does not begin&amp;lt;/em&amp;gt; with a &amp;lt;code&amp;gt;#version&amp;lt;/code&amp;gt; directive but &amp;lt;em&amp;gt;does&amp;lt;/em&amp;gt; have a &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; (or later) directive anywhere in the main scene file&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt; Using &amp;lt;code&amp;gt;ambient&amp;lt;/code&amp;gt; with a suspiciously high value in a non-legacy scene will now issue a warning, unless &amp;lt;code&amp;gt;emission&amp;lt;/code&amp;gt; is also specified&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; interpreted as escape characters &amp;lt;em&amp;gt;if&amp;lt;/em&amp;gt; the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. &amp;lt;em&amp;gt;requires&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;#version 3.71&amp;lt;/code&amp;gt; or later&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
====Code Snippet's Comments and Content Related====&lt;br /&gt;
&amp;lt;p&amp;gt;Use this section for &amp;lt;em&amp;gt;code snippet's&amp;lt;/em&amp;gt; to be included in reference. Comments and content related items are welcome too.&amp;lt;/p&amp;gt;&lt;br /&gt;
===3.7.1 Scene File Checklist===&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} spindle torus example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} user_defined camera example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Pavement pattern example&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;{{Done}} Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Potential pattern using blobs. Second with iso or as option in first scene.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 20123.&amp;lt;/li&amp;gt;  &lt;br /&gt;
  &amp;lt;li&amp;gt;Replace while loops with for loops where counting. Cleans up our example scenes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/arraycoupleddf3s&amp;diff=8882</id>
		<title>User:Wfpokorny/DensityFile/arraycoupleddf3s</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny/DensityFile/arraycoupleddf3s&amp;diff=8882"/>
		<updated>2016-12-07T13:53:31Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: ConvertImagesToDF3() now using gamma 1.0 with input images. Think easier for users.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;The include file arraycoupleddf3s.inc defines several macros useful for working with df3 files. Supposing it might be merged into arrays.inc given the df3 write macro is already in that include file?&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;While much of the updated df3, density_file pattern documentation presumes additional code updates have been adopted, this include file was written to work compatibly with the 3.7.0-stable release.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The current body of the include file:&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.&lt;br /&gt;
// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a&lt;br /&gt;
// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.&lt;br /&gt;
&lt;br /&gt;
// Persistence of Vision Ray Tracer version 3.7 Include File&lt;br /&gt;
// File: arraycoupleddf3s.inc&lt;br /&gt;
// Last updated: December 07 2016  WFP&lt;br /&gt;
// Description: Macros &amp;amp; functions for working with arrays and df3 files.&lt;br /&gt;
//&lt;br /&gt;
//   ARRAYS_ReadDF3             - Complement to arrays.inc's ARRAYS_WriteDF3.&lt;br /&gt;
//   ConvertImagesToDF3         - 2D images to df3 file.&lt;br /&gt;
//   ConvertArrayOfStringsToDF3 - Array of strings to df3 file.&lt;br /&gt;
//   ConvertFunctionToDF3       - Given a function creates a df3 file.&lt;br /&gt;
//   NxNx9DBLtoArrayEntry       - Convert POV-Ray DBL to 9 deep NxN array&lt;br /&gt;
//                                usually ahead of ARRAYS_WriteDF3 write and&lt;br /&gt;
//                                access to the values as +-64 bit depth via&lt;br /&gt;
//                                FnctNxNx9ArrayEntryToDBL.&lt;br /&gt;
//   FnctNxNx9ArrayEntryToDBL   - Function to work with +-64 bit, df3 stored,&lt;br /&gt;
//                                integer values.&lt;br /&gt;
//------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#ifndef(ARRAYCOUPLEDDF3S_INC_TEMP)&lt;br /&gt;
#declare ARRAYCOUPLEDDF3S_INC_TEMP = version;&lt;br /&gt;
#version 3.7;&lt;br /&gt;
&lt;br /&gt;
#ifdef(View_POV_Include_Stack)&lt;br /&gt;
   #debug &amp;quot;including arraycoupleddf3s.inc\n&amp;quot;&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;arrays.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//--- Generic df3 read. The df3 write was added in 3.7.0 to arrays.inc&lt;br /&gt;
//    as ARRAYS_WriteDF3(). The incoming array must have been pre-defined&lt;br /&gt;
//    at a size matching the df3 file to accurately read and store all&lt;br /&gt;
//    voxel values.&lt;br /&gt;
#macro ARRAYS_ReadDF3(_Ary,_FileName)&lt;br /&gt;
   #local Fn_df3   = function{pattern{density_file df3 _FileName interpolate 0}}&lt;br /&gt;
   #local _X       = dimension_size(_Ary,1);&lt;br /&gt;
   #local _Y       = dimension_size(_Ary,2);&lt;br /&gt;
   #local _Z       = dimension_size(_Ary,3);&lt;br /&gt;
   #local Dx       = 1/_X;&lt;br /&gt;
   #local DxVoxCtr = Dx/2;&lt;br /&gt;
   #local Dy       = 1/_Y;&lt;br /&gt;
   #local DyVoxCtr = Dy/2;&lt;br /&gt;
   #local Dz       = 1/_Z;&lt;br /&gt;
   #local DzVoxCtr = Dz/2;&lt;br /&gt;
   #for (Z,0,_Z-1)&lt;br /&gt;
     #for (Y,0,_Y-1)&lt;br /&gt;
       #for (X,0,_X-1)&lt;br /&gt;
         #local Xi=(X*Dx)+DxVoxCtr;&lt;br /&gt;
         #local Yi=(Y*Dy)+DyVoxCtr;&lt;br /&gt;
         #local Zi=(Z*Dz)+DzVoxCtr;&lt;br /&gt;
         #local _Ary[X][Y][Z]=Fn_df3(Xi,Yi,Zi).red;&lt;br /&gt;
       #end&lt;br /&gt;
     #end&lt;br /&gt;
   #end&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
//--- Utility function with with ConvertArrayOfStringsToDF3.&lt;br /&gt;
#macro arraycoupleddf3sAsciiToVal(_AsciiVal)&lt;br /&gt;
   #switch (_AsciiVal)&lt;br /&gt;
      #range (asc(&amp;quot;a&amp;quot;), asc(&amp;quot;z&amp;quot;)) #local ReturnVal = (_AsciiVal-asc(&amp;quot;a&amp;quot;))/52.0; #break&lt;br /&gt;
      #range (asc(&amp;quot;A&amp;quot;), asc(&amp;quot;Z&amp;quot;)) #local ReturnVal = (_AsciiVal-asc(&amp;quot;A&amp;quot;)+26)/52.0; #break&lt;br /&gt;
      #range (asc(&amp;quot;0&amp;quot;), asc(&amp;quot;9&amp;quot;)) #local ReturnVal = (_AsciiVal-asc(&amp;quot;0&amp;quot;))/10.0; #break&lt;br /&gt;
      #case (asc (&amp;quot;*&amp;quot;)) #local ReturnVal = 1.0; #break&lt;br /&gt;
      #else #local ReturnVal = 0.0; #break&lt;br /&gt;
   #end&lt;br /&gt;
   (ReturnVal)&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
//--- Translate a 'y,z' 2D array of text strings into df3 file. String length&lt;br /&gt;
//    provides the 'x' range for the df3.&lt;br /&gt;
//&lt;br /&gt;
//    0-9    characters =&amp;gt; 0.0 to 0.9 df3 values.&lt;br /&gt;
//    *      character  =&amp;gt; 1.0.&lt;br /&gt;
//    a-zA-Z characters =&amp;gt; 52 levels from a=1/52 to Z=52/52.&lt;br /&gt;
//    Other  characters =&amp;gt; 0.0.&lt;br /&gt;
//&lt;br /&gt;
//    _Ary                - The array containing text strings to convert.&lt;br /&gt;
//    _DF3FileName        - Name of the output df3 file.&lt;br /&gt;
//    _Depth              - 8 or 16. Best resolution from text only 1/52 so usually 8.&lt;br /&gt;
//    _Pad                - 0|&amp;lt;val&amp;gt;. If &amp;gt;0, we will pad all sides of the df3 with that&lt;br /&gt;
//                          count of 0.0 values.&lt;br /&gt;
//    _PadOnLeft          - 0 or 1. If 1 defined array df3 is padded on the left with&lt;br /&gt;
//                          0s to a width equal to the incoming right side. This is&lt;br /&gt;
//                          done for convenience when creating df3 for lathe work, but&lt;br /&gt;
//                          also due the 256 character string limit in POV-Ray SDL.&lt;br /&gt;
//&lt;br /&gt;
// Example creating a df3 profile for bowl. Isosurface later scales flatter.&lt;br /&gt;
//&lt;br /&gt;
//    #include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
//    #include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled DF3 macros &amp;amp; functions.&lt;br /&gt;
//&lt;br /&gt;
//    #declare AryStrs = array[25][1]&lt;br /&gt;
//    #declare AryStrs[0][0]  = &amp;quot;-------------------------------------2------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[1][0]  = &amp;quot;------------------------------------3-------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[2][0]  = &amp;quot;-----------------------------------2--------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[3][0]  = &amp;quot;----------------------------------2---------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[4][0]  = &amp;quot;---------------------------------2----------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[5][0]  = &amp;quot;--------------------------------3-----------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[6][0]  = &amp;quot;-------------------------------4------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[7][0]  = &amp;quot;-------------------------------5------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[8][0]  = &amp;quot;------------------------------4-------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[9][0]  = &amp;quot;-----------------------------5--------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[10][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[11][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[12][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[13][0] = &amp;quot;----------------------------6---------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[14][0] = &amp;quot;---------------------------7----------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[15][0] = &amp;quot;--------------------------7-----------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[16][0] = &amp;quot;-------------------------7------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[17][0] = &amp;quot;------------------------7-------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[18][0] = &amp;quot;-----------------------7--------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[19][0] = &amp;quot;-------------------6666---------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[20][0] = &amp;quot;------------------7-------------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[21][0] = &amp;quot;-----------------7--------------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[22][0] = &amp;quot;----------------7---------------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[23][0] = &amp;quot;---------------7----------------------------------&amp;quot;;&lt;br /&gt;
//    #declare AryStrs[24][0] = &amp;quot;666666666666666-----------------------------------&amp;quot;;&lt;br /&gt;
//    //&lt;br /&gt;
//    //                         &amp;lt;---------------------- 50 ----------------------&amp;gt;&lt;br /&gt;
//&lt;br /&gt;
//    ConvertArrayOfStringsToDF3(AryStrs,&amp;quot;StringsToDF3.df3&amp;quot;,8,5,1)&lt;br /&gt;
//&lt;br /&gt;
#macro ConvertArrayOfStringsToDF3(_Ary,_DF3FileName,_Depth,_Pad,_PadOnLeft)&lt;br /&gt;
   #ifndef (_Ary)&lt;br /&gt;
       #error &amp;quot;ConvertArrayOfStringsToDF3: Array passed is not defined.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (dimensions(_Ary)!=2)&lt;br /&gt;
       #error &amp;quot;ConvertArrayOfStringsToDF3: Array/DF3 must have 2 dimensions.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #local _Y = dimension_size(_Ary,1);&lt;br /&gt;
   #local _Z = dimension_size(_Ary,2);&lt;br /&gt;
   #if (_Y&amp;lt;1)&lt;br /&gt;
       #error &amp;quot;ConvertArrayOfStringsToDF3: Array/DF3 dimension 1 must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_Z&amp;lt;1)&lt;br /&gt;
       #error &amp;quot;ConvertArrayOfStringsToDF3: Array/DF3 dimension 2 must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #local _X = strlen(_Ary[0][0]);&lt;br /&gt;
   #if (_X&amp;lt;1)&lt;br /&gt;
       #error &amp;quot;ConvertArrayOfStringsToDF3: String lengths must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_Depth!=8 &amp;amp; _Depth!=16)&lt;br /&gt;
       #error &amp;quot;ConvertArrayOfStringsToDF3: Depth parameter must be 8 or 16.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_Pad&amp;lt;0 | _Pad&amp;gt;=pow(2,16))&lt;br /&gt;
       #error &amp;quot;ConvertArrayOfStringsToDF: Pad value must be &amp;gt;=0 and less than max df3 range.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_PadOnLeft!=0 &amp;amp; _PadOnLeft!=1)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: PadOnLeft value must be 0 or 1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
&lt;br /&gt;
   #local _Xn  = _X+(2*_Pad);&lt;br /&gt;
   #local _Yn  = _Y+(2*_Pad);&lt;br /&gt;
   #local _Zn  = _Z+(2*_Pad);&lt;br /&gt;
   #if (_PadOnLeft)&lt;br /&gt;
     #local _Xn   = _Xn+_X;&lt;br /&gt;
     #local padBy = _X;&lt;br /&gt;
   #else&lt;br /&gt;
     #local padBy = 0;&lt;br /&gt;
   #end&lt;br /&gt;
   #local DF3Ary = array[_Xn][_Yn][_Zn];&lt;br /&gt;
&lt;br /&gt;
   #local LookAtStringPlaneCnt=0;&lt;br /&gt;
   #for (Z,0,_Zn-1)&lt;br /&gt;
     #if (Z&amp;gt;=_Pad &amp;amp; Z&amp;lt;_Zn-_Pad)&lt;br /&gt;
       #debug concat(&amp;quot;zPlane &amp;quot;,str(Z,-1,0),&amp;quot; StringPlane &amp;quot;,str(LookAtStringPlaneCnt,-1,0),&amp;quot;\n&amp;quot;)&lt;br /&gt;
     #else&lt;br /&gt;
       #debug concat(&amp;quot;zPlane &amp;quot;,str(Z,-1,0),&amp;quot; Padding with zeroes.\n&amp;quot;)&lt;br /&gt;
     #end&lt;br /&gt;
&lt;br /&gt;
     #for (Y,0,_Yn-1)&lt;br /&gt;
       #if (Y&amp;gt;=_Pad &amp;amp; Y&amp;lt;_Yn-_Pad)&lt;br /&gt;
         #local _Yr=Y-_Pad;&lt;br /&gt;
       #else&lt;br /&gt;
         #local _Yr=0;&lt;br /&gt;
       #end&lt;br /&gt;
       #if (strlen(_Ary[_Yr][min(LookAtStringPlaneCnt,_Z-1)])!=_X)&lt;br /&gt;
         #debug concat(&amp;quot;\n&amp;quot;,&amp;quot;ConvertArrayOfStringsToDF3: String length of array entry at:&amp;quot;,&amp;quot;\n&amp;quot;)&lt;br /&gt;
         #debug concat(&amp;quot;[&amp;quot;,str(_Yr,-1,0),&amp;quot;][&amp;quot;,str(min(LookAtStringPlaneCnt,_Z-1),-1,0),&amp;quot;] must match [0][0] length of &amp;quot;,str(_X,-1,0),&amp;quot;.&amp;quot;,&amp;quot;\n\n&amp;quot;)&lt;br /&gt;
         #error &amp;quot;Stop.&amp;quot;&lt;br /&gt;
       #end&lt;br /&gt;
       #for (X,0,_Xn-1)&lt;br /&gt;
         #if (X&amp;gt;=_Pad+padBy &amp;amp; Y&amp;gt;=_Pad &amp;amp; Z&amp;gt;=_Pad &amp;amp; X&amp;lt;_Xn-_Pad &amp;amp; Y&amp;lt;_Yn-_Pad &amp;amp; Z&amp;lt;_Zn-_Pad)&lt;br /&gt;
           #local _Xr=X-_Pad;&lt;br /&gt;
           // #debug concat(str(_Xr,-1,0),&amp;quot; &amp;quot;,str(_Yr,-1,0),&amp;quot; &amp;quot;,str(LookAtStringPlaneCnt,-1,0),&amp;quot;\n&amp;quot;)&lt;br /&gt;
           #local Character=asc(substr(_Ary[_Yr][LookAtStringPlaneCnt],_Xr-padBy+1,1));&lt;br /&gt;
           #local DF3Ary[X][(_Yn-1)-Y][Z]=arraycoupleddf3sAsciiToVal(Character);&lt;br /&gt;
         #else&lt;br /&gt;
           #local DF3Ary[X][(_Yn-1)-Y][Z]=0.0;&lt;br /&gt;
         #end&lt;br /&gt;
       #end&lt;br /&gt;
     #end&lt;br /&gt;
     #if (Z&amp;gt;=_Pad &amp;amp; Z&amp;lt;_Zn-_Pad)&lt;br /&gt;
       #local LookAtStringPlaneCnt=LookAtStringPlaneCnt+1;&lt;br /&gt;
     #end&lt;br /&gt;
   #end&lt;br /&gt;
   ARRAYS_WriteDF3(DF3Ary,_DF3FileName,_Depth)&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
//--- Translate one or more images into df3 file filtering by linear distance&lt;br /&gt;
//    from the passed color as a 0-1 ratio in the color unit cube.&lt;br /&gt;
//&lt;br /&gt;
//    _X                  - The x voxel grid count.&lt;br /&gt;
//    _Y                  - The y voxel grid count.&lt;br /&gt;
//    _BaseVal            - The base value to use when color is not matched.&lt;br /&gt;
//                          This is normally 0.0.&lt;br /&gt;
//    _UseVal             - To get specific value in the df3 on matching color&lt;br /&gt;
//                          set explicitly to &amp;gt;=0.0, &amp;lt;=1.0 value.&lt;br /&gt;
//                          Otherwise -1 will set voxel to the image's '.grey'.&lt;br /&gt;
//    _Color              - The color to match as 3 value vector.&lt;br /&gt;
//    _ColorNearness      - 0-1 value specifies how near image color must be to&lt;br /&gt;
//                          be considered a match.&lt;br /&gt;
//    _Weight             - 0|1 If 1, samples 12 times in circular pattern to&lt;br /&gt;
//                          a half voxel radius and multiplies voxel center&lt;br /&gt;
//                          sampled value by ratio matched by color-wise near.&lt;br /&gt;
//    _ImageFileNamesAry  - An array of 1 to N image file names. Image files&lt;br /&gt;
//                          can repeat for depth of representation in the df3.&lt;br /&gt;
//    _DF3FileName        - Name of the output df3 file.&lt;br /&gt;
//    _Depth              - 8 or 16.&lt;br /&gt;
//    _Pad                - 0|&amp;lt;val&amp;gt;. If &amp;gt;0, we will pad all sides of the df3&lt;br /&gt;
//                          with that count of 0.0 values.&lt;br /&gt;
//&lt;br /&gt;
// Example code to create a df3 where clouds defined white/grey on black&lt;br /&gt;
// background in 3 image files:&lt;br /&gt;
//&lt;br /&gt;
//    #include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
//    #include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled DF3 macros &amp;amp; functions.&lt;br /&gt;
//&lt;br /&gt;
//    #declare ImageFileNamesAry=array[3] {&lt;br /&gt;
//       &amp;quot;CloudFront.png&amp;quot;,&lt;br /&gt;
//       &amp;quot;CloudMiddle.png&amp;quot;,&lt;br /&gt;
//       &amp;quot;CloutBack.png&amp;quot;&lt;br /&gt;
//    }&lt;br /&gt;
//    ConvertImagesToDF3(500,500,0.0,-1,&amp;lt;1,1,1&amp;gt;,1.5,0,ImageFileNamesAry,&amp;quot;Cloud.df3&amp;quot;,8,5)&lt;br /&gt;
//&lt;br /&gt;
//    #error &amp;quot;Stopping after parse stage for DF3 creation from image.&amp;quot;&lt;br /&gt;
//&lt;br /&gt;
#macro ConvertImagesToDF3(_X,_Y,_BaseVal,_UseVal,_Color,_ColorNearness,_Weight,&lt;br /&gt;
                          _ImageFileNamesAry,_DF3FileName,_Depth,_Pad)&lt;br /&gt;
   #if (_X&amp;lt;1 | _Y&amp;lt;1)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Passed X and Y dimensions must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_BaseVal&amp;lt;0.0 | _BaseVal&amp;gt;1.0)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Base value must be &amp;gt;=0.0 and &amp;lt;=1.0 (normally 0.0).\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if ((_UseVal!=-1) &amp;amp; (_UseVal&amp;lt;0.0 | _UseVal&amp;gt;1.0))&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Use value must -1 or be &amp;gt;=0.0 and &amp;lt;=1.0.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #local _tmpColor = color _Color;&lt;br /&gt;
   #if (_tmpColor.red&amp;lt;0.0)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: red component of color must be &amp;gt;=0.0.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_tmpColor.green&amp;lt;0.0)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: green component of color must be &amp;gt;=0.0.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_tmpColor.blue&amp;lt;0.0)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: blue component of color must be &amp;gt;=0.0.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_ColorNearness&amp;lt;0.0)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: ColorNearness value must be &amp;gt;=0.0.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_Weight!=0 &amp;amp; _Weight!=1)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Weight value must be 0 or 1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #ifndef (_ImageFileNamesAry)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Image array passed is not defined.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (dimensions(_ImageFileNamesAry)!=1)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Image array must have 1 dimension - a list.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (dimension_size(_ImageFileNamesAry,1)&amp;lt;1)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Image array dimension 1 must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_Depth!=8 &amp;amp; _Depth!=16)&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Depth parameter must be 8 or 16.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_Pad&amp;lt;0 | _Pad&amp;gt;=pow(2,16))&lt;br /&gt;
       #error &amp;quot;ConvertImagesToDF3: Pad value must be &amp;gt;=0 and less than max df3 range.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
&lt;br /&gt;
   #local _LookAtImageCnt=0;&lt;br /&gt;
   #for (Z,0,_Zn-1)&lt;br /&gt;
     #if (Z&amp;gt;=_Pad &amp;amp; Z&amp;lt;_Zn-_Pad)&lt;br /&gt;
       #debug concat(&amp;quot;zPlane &amp;quot;,str(Z,-1,0),&amp;quot; &amp;quot;,_ImageFileNamesAry[_LookAtImageCnt],&amp;quot;\n&amp;quot;)&lt;br /&gt;
       #ifdef (FnImagePigment)&lt;br /&gt;
         #undef FnImagePigment&lt;br /&gt;
       #end&lt;br /&gt;
       #local FnImagePigment=function{ pigment {image_map {concat(_ImageFileNamesAry[_LookAtImageCnt]) gamma 1.0 map_type 0 interpolate 2} } }&lt;br /&gt;
       #local _LookAtImageCnt=_LookAtImageCnt+1;&lt;br /&gt;
     #else&lt;br /&gt;
       #debug concat(&amp;quot;zPlane &amp;quot;,str(Z,-1,0),&amp;quot; Padding with zeroes.\n&amp;quot;)&lt;br /&gt;
     #end&lt;br /&gt;
&lt;br /&gt;
     #for (Y,0,_Yn-1)&lt;br /&gt;
       #local _Yr=(Y-_Pad)/(_Yn-(2*_Pad));&lt;br /&gt;
       #for (X,0,_Xn-1)&lt;br /&gt;
         #if (X&amp;gt;=_Pad &amp;amp; Y&amp;gt;=_Pad &amp;amp; Z&amp;gt;=_Pad &amp;amp; X&amp;lt;_Xn-_Pad &amp;amp; Y&amp;lt;_Yn-_Pad &amp;amp; Z&amp;lt;_Zn-_Pad)&lt;br /&gt;
           #local _Xr=(X-_Pad)/(_Xn-(2*_Pad));&lt;br /&gt;
           #local rDiff=_Color.red  -FnImagePigment(_Xr,_Yr,0).red;&lt;br /&gt;
           #local gDiff=_Color.green-FnImagePigment(_Xr,_Yr,0).green;&lt;br /&gt;
           #local bDiff=_Color.blue -FnImagePigment(_Xr,_Yr,0).blue;&lt;br /&gt;
           #if (sqrt(rDiff*rDiff+gDiff*gDiff+bDiff*bDiff)&amp;lt;=_ColorNearness)&lt;br /&gt;
             #if (_Weight=1)&lt;br /&gt;
                #local weightMult = 1.0; // Count center as 1 as this must be true to be at this line&lt;br /&gt;
                #for (I,0,11)&lt;br /&gt;
                  #local rDiff=_Color.red  -FnImagePigment(_Xr+AryWeightVecs[I].x,_Yr+AryWeightVecs[I].y,0).red;&lt;br /&gt;
                  #local gDiff=_Color.green-FnImagePigment(_Xr+AryWeightVecs[I].x,_Yr+AryWeightVecs[I].y,0).green;&lt;br /&gt;
                  #local bDiff=_Color.blue -FnImagePigment(_Xr+AryWeightVecs[I].x,_Yr+AryWeightVecs[I].y,0).blue;&lt;br /&gt;
                  #if (sqrt(rDiff*rDiff+gDiff*gDiff+bDiff*bDiff)&amp;lt;=_ColorNearness)&lt;br /&gt;
                    #local weightMult = weightMult + 1;&lt;br /&gt;
                  #end&lt;br /&gt;
                #end&lt;br /&gt;
                #local weightMult = weightMult/13;&lt;br /&gt;
             #else&lt;br /&gt;
                #local weightMult = 1.0;&lt;br /&gt;
             #end&lt;br /&gt;
             #if (_UseVal&amp;gt;=0 &amp;amp; _UseVal&amp;lt;=1)&lt;br /&gt;
               #local Ary[X][Y][Z]=_UseVal*weightMult;&lt;br /&gt;
             #else&lt;br /&gt;
               #local Ary[X][Y][Z]=FnImagePigment(_Xr,_Yr,0).gray*weightMult;&lt;br /&gt;
             #end&lt;br /&gt;
           #else&lt;br /&gt;
             #local Ary[X][Y][Z]=_BaseVal;&lt;br /&gt;
           #end&lt;br /&gt;
         #else&lt;br /&gt;
           #local Ary[X][Y][Z]=0.0;&lt;br /&gt;
         #end&lt;br /&gt;
       #end&lt;br /&gt;
     #end&lt;br /&gt;
   #end&lt;br /&gt;
   ARRAYS_WriteDF3(Ary,_DF3FileName,_Depth)&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
//--- Translate a function into a df3 file.&lt;br /&gt;
//&lt;br /&gt;
//    _X                  - The x voxel grid count to be created.&lt;br /&gt;
//    _Y                  - The y voxel grid count.&lt;br /&gt;
//    _Z                  - The z voxel grid count.&lt;br /&gt;
//    _BaseVal            - The base value to use when function value is not&lt;br /&gt;
//                          matched. This is normally 0.0.&lt;br /&gt;
//    _UseVal             - For specific value set explicitly as &amp;gt;=0.0, &amp;lt;=1.0.&lt;br /&gt;
//                          Otherwise -1 to use absolute of matched function&lt;br /&gt;
//                          value clamped to 0.0 - 1.0 range.&lt;br /&gt;
//    _FnctMinValue       - The minimum value returned by function to be&lt;br /&gt;
//                          considered an match.&lt;br /&gt;
//    _FnctMaxValue       - The maximum value for a match.&lt;br /&gt;
//    _Function           - The function to run over the unit cube to a&lt;br /&gt;
//                          resolution of _X,_Y,_Z.&lt;br /&gt;
//    _DF3FileName        - Name of the output df3 file.&lt;br /&gt;
//    _Depth              - 8 or 16.&lt;br /&gt;
//    _Pad                - 0|&amp;lt;val&amp;gt;. If &amp;gt;0, pads all sides of the df3 with&lt;br /&gt;
//                          that count of 0.0 values.&lt;br /&gt;
//&lt;br /&gt;
// Example code:&lt;br /&gt;
//&lt;br /&gt;
//    #include &amp;quot;arrays.inc&amp;quot;           // For ARRAYS_WriteDF3()&lt;br /&gt;
//    #include &amp;quot;arraycoupleddf3s.inc&amp;quot; // Array coupled DF3 macros &amp;amp; functions.&lt;br /&gt;
//&lt;br /&gt;
//    ConvertFunctionToDF3(50,50,50,0.0,0.8,-9e10,0.0,Fnct00,&amp;quot;Cloud.df3&amp;quot;,8,5)&lt;br /&gt;
//&lt;br /&gt;
//    #error &amp;quot;Stopping after parse stage for DF3 creation from image.&amp;quot;&lt;br /&gt;
//&lt;br /&gt;
#macro ConvertFunctionToDF3(_X,_Y,_Z,_BaseVal,_UseVal,_FnctMinVal,_FnctMaxVal,&lt;br /&gt;
                            _Function,_DF3FileName,_Depth,_Pad)&lt;br /&gt;
   #if (_X&amp;lt;1 | _Y&amp;lt;1 | _Z&amp;lt;1)&lt;br /&gt;
       #error &amp;quot;ConvertFunctionToDF3: Passed X, Y and Z dimensions must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_BaseVal&amp;lt;0.0 | _BaseVal&amp;gt;1.0)&lt;br /&gt;
       #error &amp;quot;ConvertFunctionToDF3: Base value must be &amp;gt;=0.0 and &amp;lt;=1.0 (normally 0.0).\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if ((_UseVal!=-1) &amp;amp; (_UseVal&amp;lt;0.0 | _UseVal&amp;gt;1.0))&lt;br /&gt;
       #error &amp;quot;ConvertFunctionToDF3: Use value must -1 or be &amp;gt;=0.0 and &amp;lt;=1.0.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_FnctMinVal &amp;gt; _FnctMaxVal)&lt;br /&gt;
       #error &amp;quot;ConvertFunctionToDF3: Function min value must be &amp;lt;=0.0 max value.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #ifndef (_Function)&lt;br /&gt;
       #error &amp;quot;ConvertFunctionToDF3: Function passed is not defined.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
   #if (_Depth!=8 &amp;amp; _Depth!=16)&lt;br /&gt;
       #error &amp;quot;ConvertFunctionToDF3: Depth parameter must be 8 or 16.\n&amp;quot;&lt;br /&gt;
   #end&lt;br /&gt;
&lt;br /&gt;
   #local _Xn = _X+(2*_Pad);&lt;br /&gt;
   #local _Yn = _Y+(2*_Pad);&lt;br /&gt;
   #local _Zn = _Z+(2*_Pad);&lt;br /&gt;
   #local Ary = array[_Xn][_Yn][_Zn];&lt;br /&gt;
   //---&lt;br /&gt;
   #for (Z,0,_Zn-1)&lt;br /&gt;
     #if (Z&amp;gt;=_Pad &amp;amp; Z&amp;lt;_Zn-_Pad)&lt;br /&gt;
       #debug concat(&amp;quot;zPlane &amp;quot;,str(Z,-1,0),&amp;quot; Evaluating\n&amp;quot;)&lt;br /&gt;
     #else&lt;br /&gt;
       #debug concat(&amp;quot;zPlane &amp;quot;,str(Z,-1,0),&amp;quot; Padding with zeroes.\n&amp;quot;)&lt;br /&gt;
     #end&lt;br /&gt;
     #local _Zr=(Z-_Pad)/_Z;&lt;br /&gt;
&lt;br /&gt;
     #for (Y,0,_Yn-1)&lt;br /&gt;
       #local _Yr=(Y-_Pad)/_Y;&lt;br /&gt;
       #for (X,0,_Xn-1)&lt;br /&gt;
         #if (X&amp;gt;=_Pad &amp;amp; Y&amp;gt;=_Pad &amp;amp; Z&amp;gt;=_Pad &amp;amp; X&amp;lt;_Xn-_Pad &amp;amp; Y&amp;lt;_Yn-_Pad &amp;amp; Z&amp;lt;_Zn-_Pad)&lt;br /&gt;
           #local _Xr=(X-_Pad)/_X;&lt;br /&gt;
           #local tmpVal=_Function(_Xr+((1/_X)/2),_Yr+((1/_Y)/2),_Zr+((1/_Z)/2));&lt;br /&gt;
           #if (tmpVal&amp;gt;=_FnctMinVal &amp;amp; tmpVal&amp;lt;=_FnctMaxVal)&lt;br /&gt;
             #if (_UseVal&amp;gt;=0 &amp;amp; _UseVal&amp;lt;=1)&lt;br /&gt;
               #local Ary[X][Y][Z]=_UseVal;&lt;br /&gt;
             #else&lt;br /&gt;
               #local Ary[X][Y][Z]=min(1,max(0,abs(tmpVal)));&lt;br /&gt;
             #end&lt;br /&gt;
           #else&lt;br /&gt;
             #local Ary[X][Y][Z]=_BaseVal;&lt;br /&gt;
           #end&lt;br /&gt;
         #else&lt;br /&gt;
           #local Ary[X][Y][Z]=0.0;&lt;br /&gt;
         #end&lt;br /&gt;
       #end&lt;br /&gt;
     #end&lt;br /&gt;
   #end&lt;br /&gt;
   ARRAYS_WriteDF3(Ary,_DF3FileName,_Depth)&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
//--- NxNx9 DF3 (coupled to Array) entry of converted POV-Ray DBL.&lt;br /&gt;
//    Expected depth is Nine 0.0 to 1.0 values being least to&lt;br /&gt;
//    most significant bytes of 64bits in depths 0-7 and&lt;br /&gt;
//    a 0 or &amp;gt;zero value in depth 8 with 0 meaning positive.&lt;br /&gt;
//    Result is DBL like in accuracy, but of course not range.&lt;br /&gt;
//    Macro defines a function which returns the DBL normalized&lt;br /&gt;
//    to +- the passed limited range. Function set up has&lt;br /&gt;
//    the parameters i,j,DeltaZ,range. Intended for use with one&lt;br /&gt;
//    byte per voxel DF3 file storage and retrieval of DBL, 64bit&lt;br /&gt;
//    accurate values.&lt;br /&gt;
//&lt;br /&gt;
// Example set up of function FnctDepth follows. Macro call passed&lt;br /&gt;
// couple and already defined array and function-&amp;gt;density_file pattern.&lt;br /&gt;
//&lt;br /&gt;
//    #declare FnctDepth=FnctNxNx9ArrayEntryToDBL(Ary,PairedDF3Fnct);&lt;br /&gt;
//&lt;br /&gt;
//    _i     - What entry in i (x in df3, perhaps not geometrical info stored...)&lt;br /&gt;
//    _j     - what entry in j (y in df3)&lt;br /&gt;
//    _Db    - Depth of byte   (z in df3)&lt;br /&gt;
//    _range - Range over which stored values previously normalized.&lt;br /&gt;
//&lt;br /&gt;
// An example scene finding distance, or depth map, values is&lt;br /&gt;
// included in the documentation.&lt;br /&gt;
//&lt;br /&gt;
#macro FnctNxNx9ArrayEntryToDBL(_Ary,_FnctDF3)&lt;br /&gt;
    function (_i,_j,_Db,_range) {&lt;br /&gt;
      (_FnctDF3(_i,_j,(0*_Db)+(_Db/2))*255          +_FnctDF3(_i,_j,(1*_Db)+(_Db/2))*255*pow(2, 8)+&lt;br /&gt;
       _FnctDF3(_i,_j,(2*_Db)+(_Db/2))*255*pow(2,16)+_FnctDF3(_i,_j,(3*_Db)+(_Db/2))*255*pow(2,24)+&lt;br /&gt;
       _FnctDF3(_i,_j,(4*_Db)+(_Db/2))*255*pow(2,32)+_FnctDF3(_i,_j,(5*_Db)+(_Db/2))*255*pow(2,40)+&lt;br /&gt;
       _FnctDF3(_i,_j,(6*_Db)+(_Db/2))*255*pow(2,48)+_FnctDF3(_i,_j,(7*_Db)+(_Db/2))*255*pow(2,56)&lt;br /&gt;
      )/pow(2,56)*_range*select((_FnctDF3(_i,_j,(8*_Db)+(_Db/2))-0.5),1,-1)&lt;br /&gt;
    }&lt;br /&gt;
    #ifndef (_Ary)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array passed is not defined.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #ifndef (_FnctDF3)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Function passed is not defined.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #if (dimensions(_Ary)!=3)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array/DF3 must have 3 dimensions.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #local _II = dimension_size(_Ary,1);&lt;br /&gt;
    #if (_II&amp;lt;1)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array/DF3 dimension 1 must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #local _JJ = dimension_size(_Ary,2);&lt;br /&gt;
    #if (_JJ&amp;lt;1)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array/DF3 dimension 2 must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #local _B  = dimension_size(_Ary,3);&lt;br /&gt;
    #if (_B!=9)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array/DF3 dimension 3 must be 9.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
//--- NxNx9  POV-Ray DBL to 9 array entries (64bit+sign) conversion.&lt;br /&gt;
//    Expected depth is Nine 0.0 to 1.0 values being Least to&lt;br /&gt;
//    most significant bytes of 64bits in depths 0-7.&lt;br /&gt;
//    A 0 or &amp;gt;zero value in byte depth 8. 0 meaning the value is positive.&lt;br /&gt;
//    Result is &amp;gt; DBL like in accuracy, but of course not range.&lt;br /&gt;
//    Macro converts the DBL normalized to +- the passed limited range to a&lt;br /&gt;
//    set of 9 array entries.  The parameters are array,i,j,range,dbl.&lt;br /&gt;
//    Intended for use with one byte per voxel DF3 file storage&lt;br /&gt;
//    and retrieval of DBL, 64bit accurate values. Values larger than&lt;br /&gt;
//    the passed +-range are set to 0.&lt;br /&gt;
//&lt;br /&gt;
// Example macro call:&lt;br /&gt;
//&lt;br /&gt;
//    NxNx9DBLtoArrayEntry(DepthAry,I,J,Range,Value)&lt;br /&gt;
//&lt;br /&gt;
// An example scene finding distance, or depth map, values is&lt;br /&gt;
// included in the documentation.&lt;br /&gt;
//&lt;br /&gt;
#macro NxNx9DBLtoArrayEntry(_Ary,_i,_j,_range,_value)&lt;br /&gt;
    #ifndef (_Ary)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array passed is not defined.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #if (dimensions(_Ary)!=3)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array must have 3 dimensions.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #local _II = dimension_size(_Ary,1);&lt;br /&gt;
    #if (_II&amp;lt;1)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array dimension 1 must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #local _JJ = dimension_size(_Ary,2);&lt;br /&gt;
    #if (_JJ&amp;lt;1)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array dimension 2 must be &amp;gt;=1.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #local _B  = dimension_size(_Ary,3);&lt;br /&gt;
    #if (_B!=9)&lt;br /&gt;
        #error &amp;quot;FnctNxNx9ArrayEntryToDBL: Array dimension 3 must be 9.\n&amp;quot;&lt;br /&gt;
    #end&lt;br /&gt;
    #if (_value&amp;lt;0)&lt;br /&gt;
        #local _Ary[_i][_j][8] = 1;&lt;br /&gt;
    #else&lt;br /&gt;
        #local _Ary[_i][_j][8] = 0;&lt;br /&gt;
    #end&lt;br /&gt;
    #if (abs(_value)&amp;gt;_range)&lt;br /&gt;
        #local _AbsFullBitsVal=0;&lt;br /&gt;
    #else&lt;br /&gt;
        #local _AbsFullBitsVal=((abs(_value)/_range)*pow(2,56));&lt;br /&gt;
    #end&lt;br /&gt;
    #declare _Ary[_i][_j][0] = bitwise_and( _AbsFullBitsVal           ,255)/255;&lt;br /&gt;
    #declare _Ary[_i][_j][1] = bitwise_and((_AbsFullBitsVal/pow(2, 8)),255)/255;&lt;br /&gt;
    #declare _Ary[_i][_j][2] = bitwise_and((_AbsFullBitsVal/pow(2,16)),255)/255;&lt;br /&gt;
    #declare _Ary[_i][_j][3] = bitwise_and((_AbsFullBitsVal/pow(2,24)),255)/255;&lt;br /&gt;
    #declare _Ary[_i][_j][4] = bitwise_and((_AbsFullBitsVal/pow(2,32)),255)/255;&lt;br /&gt;
    #declare _Ary[_i][_j][5] = bitwise_and((_AbsFullBitsVal/pow(2,40)),255)/255;&lt;br /&gt;
    #declare _Ary[_i][_j][6] = bitwise_and((_AbsFullBitsVal/pow(2,48)),255)/255;&lt;br /&gt;
    #declare _Ary[_i][_j][7] = bitwise_and((_AbsFullBitsVal/pow(2,56)),255)/255;&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
//---------------------------------------------------------------------------&lt;br /&gt;
#version ARRAYCOUPLEDDF3S_INC_TEMP;&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=8881</id>
		<title>User:Wfpokorny</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=8881"/>
		<updated>2016-12-04T13:14:06Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Removed text related to fix/unixSimpleDirectMediaLayerMessages merged into 371 master.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=The Playpen= &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A bit of documentation for items currently in my POV-Ray playpen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Branches on github==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;I'm maintaining my POV-Ray patches as un-merged github branches to make it easier for me to keep them current&lt;br /&gt;
with the POV-Ray master branch. In my own space I occasionally create my own version of POV-Ray which includes &lt;br /&gt;
just the branches/patches of mine and others that I want.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pointers to my active branches follow with the thought some might be generally useful to others in rolling &lt;br /&gt;
their own versions of POV-Ray.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Tune Blob Accuracy===&lt;br /&gt;
&amp;lt;p&amp;gt;This just tweaks an internal value in blob.cpp that in my testing of blobs over the past year I've found works better. &lt;br /&gt;
I will eventually package up all my blob test cases and open a github issue/pull request, but not there today...&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git tune/blob_accuracy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Density File Pattern Updates===&lt;br /&gt;
&amp;lt;p&amp;gt;A three pronged effort to improve .df3 density file pattern support.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Improved user documentation. &lt;br /&gt;
&amp;lt;li&amp;gt;Additional array coupled df3 creation and read support. Write support exists.  &lt;br /&gt;
&amp;lt;li&amp;gt;Fixes and extensions for the density file pattern. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See: [[User:Wfpokorny/DensityFile| Density File Pattern - proposed documentation updates.]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newDensityPatternInterpolations&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #79 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Allowing image_map use in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;A more targeted feature addition to the density feature requested by developers. I use the pigment_map&lt;br /&gt;
branch, which includes this image_map support.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/image_map_wDensity&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #82 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Addition black_hole warp type(s)===&lt;br /&gt;
&amp;lt;p&amp;gt;The black_hole warp in master today has just type 0 support so the type is not really documented though the parser picks it up. Further the default sucking black_hole is clamped in movement and it sometimes reaches outside the black_hole range making for interesting effects I've used, but certainly confusing results for any novice. This patch adds a type 1 version of the black_hole warp which duplicates exactly the pushing/inverted form of type 0, but for the sucking form it implements a form more like what folks would expect. The default with this patch is still type 0 so type 1 needs to be specified to use the new type.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newBlack_holeTypes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #86 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Non-portable 32 bit DF3 write capability===&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request for this rejected as not portable - and I admit I don't understand the particulars. The feature works for me on linux though and I find it useful so I maintain it for my use.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/nonPortable32bitDF3Write&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Both image_map and pigment_map support in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;Lets one use both image_map and pigment_map in density{} as a way to quickly get full color density/media.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/pigment_map_wDensity&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Unix file and console column wrap control by environment variable===&lt;br /&gt;
&amp;lt;p&amp;gt;Enabling control of the wrapping via environment variables of&lt;br /&gt;
POVRAY_CONSOLE_COLUMNS for the console and POVRAY_TEXTSTREAM_COLUMNS&lt;br /&gt;
for files and console.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Note. There is an active pull req #117 approaching this issue in another way.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/unixConsoleFileColumnWrapControl&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Fix. Rejected parser check for subsurface crash/non-function issue #122===&lt;br /&gt;
&amp;lt;p&amp;gt;Missing or mis-placed subsurface definition in global block can cause crash or give the indication the&lt;br /&gt;
subsurface feature is working when it is not. I run with this parser hack as protection pending &lt;br /&gt;
a more complete fix.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/subsurfaceCrash_Issue122_FS306&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==How to merge branches into a custom version of POV-Ray==&lt;br /&gt;
&amp;lt;p&amp;gt;Given you've already installed git and have an active local fork of POV-Ray master branches can be merged on linux with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout master &lt;br /&gt;
git branch povraySpecial&lt;br /&gt;
git checkout povraySpecial&lt;br /&gt;
git pull https://github.com/wfpokorny/povray.git fix/unixSimpleDirectMediaLayerMessages&lt;br /&gt;
... Usual prebuild.sh, configure and make ... &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incomplete section==&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/HowTo| How to get sub page...]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=8877</id>
		<title>User:Wfpokorny</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=8877"/>
		<updated>2016-11-27T15:25:01Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Formatting &amp;amp; typos.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=The Playpen= &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A bit of documentation for items currently in my POV-Ray playpen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Branches on github==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;I'm maintaining my POV-Ray patches as un-merged github branches to make it easier for me to keep them current&lt;br /&gt;
with the POV-Ray master branch. In my own space I occasionally create my own version of POV-Ray which includes &lt;br /&gt;
just the branches/patches of mine and others that I want.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pointers to my active branches follow with the thought some might be generally useful to others in rolling &lt;br /&gt;
their own versions of POV-Ray.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Tune Blob Accuracy===&lt;br /&gt;
&amp;lt;p&amp;gt;This just tweaks an internal value in blob.cpp that in my testing of blobs over the past year I've found works better. &lt;br /&gt;
I will eventually package up all my blob test cases and open a github issue/pull request, but not there today...&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git tune/blob_accuracy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Density File Pattern Updates===&lt;br /&gt;
&amp;lt;p&amp;gt;A three pronged effort to improve .df3 density file pattern support.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Improved user documentation. &lt;br /&gt;
&amp;lt;li&amp;gt;Additional array coupled df3 creation and read support. Write support exists.  &lt;br /&gt;
&amp;lt;li&amp;gt;Fixes and extensions for the density file pattern. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See: [[User:Wfpokorny/DensityFile| Density File Pattern - proposed documentation updates.]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newDensityPatternInterpolations&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #79 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Allowing image_map use in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;A more targeted feature addition to the density feature requested by developers. I use the pigment_map&lt;br /&gt;
branch, which includes this image_map support.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/image_map_wDensity&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #82 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Addition black_hole warp type(s)===&lt;br /&gt;
&amp;lt;p&amp;gt;The black_hole warp in master today has just type 0 support so the type is not really documented though the parser picks it up. Further the default sucking black_hole is clamped in movement and it sometimes reaches outside the black_hole range making for interesting effects I've used, but certainly confusing results for any novice. This patch adds a type 1 version of the black_hole warp which duplicates exactly the pushing/inverted form of type 0, but for the sucking form it implements a form more like what folks would expect. The default with this patch is still type 0 so type 1 needs to be specified to use the new type.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newBlack_holeTypes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #86 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Non-portable 32 bit DF3 write capability===&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request for this rejected as not portable - and I admit I don't understand the particulars. The feature works for me on linux though and I find it useful so I maintain it for my use.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/nonPortable32bitDF3Write&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Both image_map and pigment_map support in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;Lets one use both image_map and pigment_map in density{} as a way to quickly get full color density/media.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/pigment_map_wDensity&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Unix file and console column wrap control by environment variable===&lt;br /&gt;
&amp;lt;p&amp;gt;Enabling control of the wrapping via environment variables of&lt;br /&gt;
POVRAY_CONSOLE_COLUMNS for the console and POVRAY_TEXTSTREAM_COLUMNS&lt;br /&gt;
for files and console.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Note. There is an active pull req #117 approaching this issue in another way.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/unixConsoleFileColumnWrapControl&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Fix. Rejected parser check for subsurface crash/non-function issue #122===&lt;br /&gt;
&amp;lt;p&amp;gt;Missing or mis-placed subsurface definition in global block can cause crash or give the indication the&lt;br /&gt;
subsurface feature is working when it is not. I run with this parser hack as protection pending &lt;br /&gt;
a more complete fix.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/subsurfaceCrash_Issue122_FS306&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
===Fix. Improved unix Simple DirectMedia Layer messages===&lt;br /&gt;
&amp;lt;p&amp;gt;See pull req or commit message for more information.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/unixSimpleDirectMediaLayerMessages&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #109 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==How to merge branches into a custom version of POV-Ray==&lt;br /&gt;
&amp;lt;p&amp;gt;Given you've already installed git and have an active local fork of POV-Ray master branches can be merged on linux with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout master &lt;br /&gt;
git branch povraySpecial&lt;br /&gt;
git checkout povraySpecial&lt;br /&gt;
git pull https://github.com/wfpokorny/povray.git fix/unixSimpleDirectMediaLayerMessages&lt;br /&gt;
... Usual prebuild.sh, configure and make ... &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incomplete section==&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/HowTo| How to get sub page...]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=8876</id>
		<title>User:Wfpokorny</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=User:Wfpokorny&amp;diff=8876"/>
		<updated>2016-11-27T15:18:52Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Some initial documentation for my active git branches.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=The Playpen= &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A bit of documentation for items currently in my POV-Ray playpen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Branches on github==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;I'm maintaining my POV-Ray patches as un-merged github branches to make it easier for me to keep them current&lt;br /&gt;
with the POV-Ray master branch. In my own space I occasionally create my own version of POV-Ray which includes &lt;br /&gt;
just the branches/patches of mine and others that I want.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pointers to my active branches follow with the thought some might be generally useful to others in rolling &lt;br /&gt;
their own versions of POV-Ray.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Tune Blob Accuracy===&lt;br /&gt;
&amp;lt;p&amp;gt;This just tweaks an internal value in blob.cpp that in my testing of blobs over the past year I've found works better. &lt;br /&gt;
I will eventually package up all my blob test cases and open a github issue/pull request, but not there today...&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git tune/blob_accuracy&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Density File Pattern Updates===&lt;br /&gt;
&amp;lt;p&amp;gt;A three pronged effort to improve .df3 density file pattern support.&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Improved user documentation. &lt;br /&gt;
&amp;lt;li&amp;gt;Additional array coupled df3 creation and read support. Write support exists.  &lt;br /&gt;
&amp;lt;li&amp;gt;Fixes and extensions for the density file pattern. &lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;See: [[User:Wfpokorny/DensityFile| Density File Pattern - proposed documentation updates.]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newDensityPatternInterpolations&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #79 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Allowing image_map use in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;A more targeted feature addition to the density feature requested by developers. I use the pigment_map&lt;br /&gt;
branch, which includes this image_map support.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/image_map_wDensity&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #82 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Addition black_hole warp type(s)===&lt;br /&gt;
&amp;lt;p&amp;gt;The black_hole warp in master today has just type 0 support so the type is not really documented though the parser picks it up. Further the default sucking black_hole is clamped in movement and it sometimes reaches outside the black_hole range making for interesting effects I've used, but certainly confusing results for any novice. This patch adds a type 1 version of the black_hole warp which duplicates exactly the pushing/inverted form of type 0, but for the sucking form it implements a form more like what folks would expect. The default with this patch is still type 0 so type 1 needs to be specified to use the new type.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/newBlack_holeTypes&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #86 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Non-portable 32 bit DF3 write capability===&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request for this rejected as not portable - and I admit I don't understand the particulars. The feature works for me on linux though and I find it useful so I maintain it for my use.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/nonPortable32bitDF3Write&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Both image_map and pigment_map support in density block===&lt;br /&gt;
&amp;lt;p&amp;gt;Lets one use both image_map and pigment_map in density{} as a way to quickly get full color density/media.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/pigment_map_wDensity&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Unix file and console column wrap control by environment variable===&lt;br /&gt;
&amp;lt;p&amp;gt;Enabling control of the wrapping via environment variables of&lt;br /&gt;
POVRAY_CONSOLE_COLUMNS for the console and POVRAY_TEXTSTREAM_COLUMNS&lt;br /&gt;
for files and console.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Note. There is an active pull req #117 approaching this issue in another way.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git feature/unixConsoleFileColumnWrapControl&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
===Fix. Rejected parser check for subsurface crash/non-function issue #122===&lt;br /&gt;
&amp;lt;p&amp;gt;Missing or mis-placed subsurface definition in global block can cause crash or give the indication the&lt;br /&gt;
subsurface feature is working when it is not. I run with this parser hack as protection pending &lt;br /&gt;
a more complete fix.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/subsurfaceCrash_Issue122_FS306&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
===Fix. Improved unix Simple DirectMedia Layer messages===&lt;br /&gt;
&amp;lt;p&amp;gt;See pull req or commit message for more information.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;git pull https://github.com/wfpokorny/povray.git fix/unixSimpleDirectMediaLayerMessages&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Pull request #109 on github.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
==How to merge branches into a custom version of POV-Ray==&lt;br /&gt;
&amp;lt;p&amp;gt;Given you've already installed git and have an active local fork of POV-Ray master branches can be merged on linux with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout master &lt;br /&gt;
git branch povraySpecial&lt;br /&gt;
git checkout povraySpecial&lt;br /&gt;
git pull https://github.com/wfpokorny/povray.git fix/unixSimpleDirectMediaLayerMessages&lt;br /&gt;
... Usual prebuild.sh, configure and make ... &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Incomplete section==&lt;br /&gt;
&lt;br /&gt;
[[User:Wfpokorny/HowTo| How to get sub page...]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Use_conditional_structures&amp;diff=8870</id>
		<title>HowTo:Use conditional structures</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Use_conditional_structures&amp;diff=8870"/>
		<updated>2016-11-23T13:30:51Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Moved nested loop example to new for_over_while howto. Fixed light color warning on move.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Conditional constructs in POV-Ray are scripting features which perform different computations or actions depending on whether a condition evaluates to true or false. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The #if, #else, #end construct==&lt;br /&gt;
The simplest conditional directive is the #if directive. This evaluates an expression, which must evaluate to a floating point number (often an integer value). This floating point number is interpreted as a boolean value, that is to say that if the expression evaluates to '0', it is considered 'false' and if it evaluates to anything else it is considered 'true'. If the condition is true then directives between the #if statement and a corresponding #else or #end statement are evaluated.&lt;br /&gt;
Note: extremely small values of about 1e-10 are considered zero (false) as a result of floating point number accuracy limits. &lt;br /&gt;
&lt;br /&gt;
The #else directive is optional but, if specified and the conditional expression was false, then directives between the #else and the corresponding #end statement are evaluated.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=pov&amp;gt;&lt;br /&gt;
#declare CameraDistance=25.8;&lt;br /&gt;
 &lt;br /&gt;
 ... Definition of some complex object that looks like a sphere at great distances. ...&lt;br /&gt;
 &lt;br /&gt;
#if (CameraDistance&amp;gt;100)&lt;br /&gt;
   sphere { &amp;lt;0,0,0&amp;gt;, 1.2 pigment {rgb 1}}&lt;br /&gt;
#else&lt;br /&gt;
   object {MyComplexObject}&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the 'greater than' comparitive operator '&amp;gt;' is used to see whether the value of the CameraDistance variable is greater than 100. In this example, the expression 'CameraDistance&amp;gt;100' evaluates to 0 ('false') because the CameraDistance variable is less than 100.&lt;br /&gt;
&lt;br /&gt;
===Conditional Conjunctions ===&lt;br /&gt;
You can combine conditional terms to build more complex conditional expressions using '&amp;amp;' (And), '|' (Or) and '!' (Not). Use brackets to control the sequence of evaluation. You can also use POV-Ray functions within terms so long as they can be resolved to numeric values. The built-in float identifiers on, off, yes, no, true, and false are designed for use as boolean constants and simply evaluate to 0 (off, no and false) or 1 (on, yes and true).&lt;br /&gt;
&lt;br /&gt;
Here's an example that might take a little thinking about:&lt;br /&gt;
&amp;lt;source lang=pov&amp;gt;&lt;br /&gt;
#declare Clothing=&amp;quot;Jeans&amp;quot;;&lt;br /&gt;
#declare JeansPermitted=false;&lt;br /&gt;
// Check to see if Jeans are permitted&lt;br /&gt;
#if (strcmp(Clothing,&amp;quot;Jeans&amp;quot;)=0 &amp;amp; !JeansPermitted)&lt;br /&gt;
   #debug &amp;quot;Sorry. Jeans are not permitted\n&amp;quot;&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, the strcmp function returns a zero because there is no difference between the two strings it has compared.&lt;br /&gt;
The term 'strcmp(Clothing,&amp;quot;Jeans&amp;quot;)=0' therefore returns a 1 (this term is true). The '!' (Not) symbol is used to check for the condition where jeans are not permitted. The '&amp;amp;' symbol is used to combine the two and to therefore test for the condition where Clothing is &amp;quot;Jeans&amp;quot; and jeans are not permitted.&lt;br /&gt;
&lt;br /&gt;
As you've probably realised, there are many ways of expressing the same thing with conditional expressions and the art is in writing it in a way that is clear enough that you will understand it when you read it through again later. It can help to write the condition out as a comment before you build it into an expression. Leaving the comment in place helps anyone reading it later.&lt;br /&gt;
&lt;br /&gt;
== The #ifdef and #ifndef, #else and #end constructs ==&lt;br /&gt;
&lt;br /&gt;
The #ifdef and #ifndef statements can be used to determine whether or not an identifier has been defined and to conditionally execute statements. If the identifier passed to the #ifdef directive exists then the statements between the #ifdef statement and a corresponding #else or #end statement are evaluated. The #else directive is optional but, if specified and the identifier passed to the #ifdef directive does not exist, then directives between the #else and the corresponding #end statement are evaluated.&lt;br /&gt;
&lt;br /&gt;
These statements can help to trap potential errors in a scene file or to set default values.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=pov&amp;gt;&lt;br /&gt;
#infdef(ObjectHeight) #declare ObjectHeight=1; #end&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==The #switch, #case, #range and #break Directives==&lt;br /&gt;
The #switch directive provides another way of specifying conditional expressions but allows you to handle a succession of conditions as defined by a #case clause or a #range clause. This directive can seem a little daunting compared to using one or more #if directives, but there are some powerful ways of using it. Like the #if directive it uses float values rather than boolean, so two values whose difference is less than 1e-10 are considered equal.&lt;br /&gt;
&lt;br /&gt;
This trivial example illustrates a number of basic points about the #switch directive. &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If a #case or #range clause is not a match it skips to the next one, ignoring everything else in between. &lt;br /&gt;
&amp;lt;li&amp;gt;If a #break is encountered within a matching #case or #range clause the #switch directive stops processing further lines, causing an immediate jump to the #end without processing subsequent sections, even if a subsequent condition would also have been satisfied. &lt;br /&gt;
&amp;lt;li&amp;gt;When processing a matching #case or #range clause, if a #break is not encountered it continues through successive #case statements whether they match or not.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although it doesn't contain a camera or any objects, the following example is a complete scene file. When you render it it'll generate a black image, but you'll be able to view the text that it writes out in the message stream.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pov&amp;quot;&amp;gt;&lt;br /&gt;
#declare MyVariable = 5.2;&lt;br /&gt;
#debug concat(&amp;quot;MyVariable: &amp;quot;,str(MyVariable,3,3),&amp;quot;\n&amp;quot;)&lt;br /&gt;
#switch (MyVariable)&lt;br /&gt;
  #case (0)&lt;br /&gt;
    #debug &amp;quot;As close to nothing as makes a tiny difference.\n&amp;quot;&lt;br /&gt;
  #break &lt;br /&gt;
  #case (1)&lt;br /&gt;
  #case (2)&lt;br /&gt;
  #case (3)&lt;br /&gt;
  #case (5)&lt;br /&gt;
  #case (7)&lt;br /&gt;
    #debug &amp;quot;A Prime number between 1 and 10 (actually within 1e-10 of a prime).\n&amp;quot;&lt;br /&gt;
  #break &lt;br /&gt;
  #range (0,10)&lt;br /&gt;
    #debug &amp;quot;A number between 1 and 10 that is not within 1e-10 of a Prime number\n&amp;quot;&lt;br /&gt;
  #break&lt;br /&gt;
  #range (10,100)&lt;br /&gt;
    #debug &amp;quot;A number between 10 and 100 (actually 10+(1e-10) to 100+(1e-10)).\n&amp;quot;&lt;br /&gt;
  #break&lt;br /&gt;
  #else&lt;br /&gt;
    #debug &amp;quot;Everything else.\n&amp;quot;&lt;br /&gt;
    #debug &amp;quot;ie. Less than zero or greater than 100.\n&amp;quot;&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the parameter to a #case clause matches the parameter to the #switch clause then everything up to the next #break, #else or #end clause is evaluated. Similarly, if the parameter to the #switch clause is between the minimum and maximum values of a #range clause then everything up to the next #break, #else or #end clause is evaluated. &lt;br /&gt;
&lt;br /&gt;
If you are interested, you can explore the sensitivity to the accuracy of the floating point number comparison by setting a value using 'e' as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pov&amp;quot;&amp;gt;&lt;br /&gt;
#declare MyVariable = 5+(0.5e-10);&lt;br /&gt;
  or&lt;br /&gt;
#declare MyVariable = 5+(1.5e-10);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using #switch with text values===&lt;br /&gt;
The #switch, #case and #range clauses accept parameters that evaluate to float numbers. This includes the strcmp function which compares two strings and returns a zero if two strings match. By turning the #switch clause on its head a little, you can therefore use it with strings. Using the #switch directive with text can be particularly handy when writing macros that can generate an object in a large number of differently styles, because you can give each style a name and set parameters based on the name of the style specified. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of using #switch with text:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pov&amp;quot;&amp;gt;&lt;br /&gt;
#declare MyVariable = &amp;quot;Ostrich&amp;quot;;&lt;br /&gt;
#switch (0)&lt;br /&gt;
  #case (strcmp(strupr(MyVariable),&amp;quot;DOG&amp;quot;))&lt;br /&gt;
    #debug &amp;quot;Dog, DOG, or dog.\n&amp;quot;&lt;br /&gt;
    // Settings to be used for a dog&lt;br /&gt;
  #break &lt;br /&gt;
  #case (strcmp(strupr(MyVariable),&amp;quot;CAT&amp;quot;))&lt;br /&gt;
    #debug &amp;quot;Cat, CAT, or cat.\n&amp;quot;&lt;br /&gt;
    // Settings to be used for a cat&lt;br /&gt;
  #break &lt;br /&gt;
  #case (strcmp(strupr(MyVariable),&amp;quot;OSTRICH&amp;quot;))&lt;br /&gt;
    #debug &amp;quot;Ostrich, OSTRICH, or ostrich.\n&amp;quot;&lt;br /&gt;
    // Settings to be used for an ostrich&lt;br /&gt;
  #break &lt;br /&gt;
  #else&lt;br /&gt;
    #debug &amp;quot;Not a dog, cat or ostrich.\n&amp;quot;&lt;br /&gt;
    // Stuff to do if an unexpected creature was encountered.&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the strupr function is used to remove case sensitivity. &lt;br /&gt;
&lt;br /&gt;
The following example illustrates the use of multiple #case clauses for a set of associated conditions to work out how many legs an animal has:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pov&amp;quot;&amp;gt;&lt;br /&gt;
#declare Animal   = &amp;quot;Ostrich&amp;quot;;&lt;br /&gt;
#switch (0)&lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;DOG&amp;quot;))&lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;CAT&amp;quot;))&lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;RHINOCEROS&amp;quot;))&lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;TABLE&amp;quot;))&lt;br /&gt;
    #declare LegCount = 4;&lt;br /&gt;
  #break &lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;OSTRICH&amp;quot;))&lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;DUCK&amp;quot;))&lt;br /&gt;
    #declare LegCount = 2;&lt;br /&gt;
  #break &lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;WORM&amp;quot;))&lt;br /&gt;
  #case (strcmp(strupr(Animal),&amp;quot;DOLPHIN&amp;quot;))&lt;br /&gt;
    #declare LegCount = 0;&lt;br /&gt;
  #break &lt;br /&gt;
  #else&lt;br /&gt;
    #declare LegCount = -1; // Unknown&lt;br /&gt;
#end&lt;br /&gt;
&lt;br /&gt;
#debug concat(&amp;quot;Animal: &amp;quot;,Animal,&amp;quot;\n&amp;quot;) &lt;br /&gt;
#if (LegCount&amp;lt;0) #debug &amp;quot;Number of Legs Unknown\n&amp;quot;&lt;br /&gt;
#else #debug concat(&amp;quot;Number of Legs: &amp;quot;,str(LegCount,3,0),&amp;quot;\n&amp;quot;)&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also test for abbreviations using the following construct:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pov&amp;quot;&amp;gt;&lt;br /&gt;
  #case (strcmp(strupr(Animal),substr(&amp;quot;RHINOCEROS&amp;quot;,1,strlen(Animal))))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would match 'Rhino' or 'Rhinoceros', but you clearly need to be a little careful with this as it would also match 'Rhinoc', 'R' and &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;. To set a minimum abbreviation length use the max function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pov&amp;quot;&amp;gt;&lt;br /&gt;
  #case (strcmp(strupr(Animal),substr(&amp;quot;RHINOCEROS&amp;quot;,1,max(strlen(Animal),5))))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would match 'Rhino', 'Rhinoceros' and everything in between, but not 'R', 'Rhin' or &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== The #while, #end construct (Loops) ==&lt;br /&gt;
See also - [[HowTo:Use_macros_and_loops]].&lt;br /&gt;
&lt;br /&gt;
The #while, #end construct encapsulates a sequence of POV-Ray statements that are repeatedly executed for as long as the conditional expression specified is true. The conditional expression can be simple or complex and adheres to the same rules as apply to the #if statement described above. &lt;br /&gt;
&lt;br /&gt;
As with the #if statement, the conditional expression must evaluate to a floating point number (often an integer value). This floating point number is interpreted as a boolean value, that is to say that if the expression evaluates to '0', it is considered 'false' and if it evaluates to anything else it is considered 'true'. If the condition is true then directives between the #while statement and a corresponding #end statement are evaluated. The conditional expression is then re-evaluated and, if still true the directives between the #while statement and the corresponding #end statement are repeated. &lt;br /&gt;
&lt;br /&gt;
The statements repeat in a loop until the condition evaluates to false. It is up to you to control the loop by defining a suitable condition that will not loop indefinitely. If the condition never evaluates to false then the program will continue to evaluate the statements forever, until you hit the stop button, until the memory of your computer is exhausted or until you terminate the application (whichever happens first) see [[Wikipedia:Infinite_loop]]. &lt;br /&gt;
&lt;br /&gt;
Note: extremely small values of about 1e-10 are considered zero (false) as a result of floating point number accuracy limits.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a simple loop: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=pov&amp;gt;&lt;br /&gt;
#declare Count=0;&lt;br /&gt;
#while (Count &amp;lt; 5)&lt;br /&gt;
  object { MyObject translate x*3*Count }&lt;br /&gt;
  #declare Count=Count+1;&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This example places five copies of MyObject in a row spaced three units apart in the x-direction. &lt;br /&gt;
&lt;br /&gt;
As described above (for the #if statement), you can combine conditional terms to build more complex looping conditional expressions using '&amp;amp;' (And), '|' (Or) and '!' (Not).&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Use_for_loop_over_traditional_while_loop&amp;diff=8869</id>
		<title>HowTo:Use for loop over traditional while loop</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Use_for_loop_over_traditional_while_loop&amp;diff=8869"/>
		<updated>2016-11-23T13:27:53Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding content for howto for loop over while loop.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
===Loops===&lt;br /&gt;
Traditionally in POV-Ray the &amp;lt;code&amp;gt;#while&amp;lt;/code&amp;gt; directive has been the way to implement loops. In 3.7 a new &amp;lt;code&amp;gt;#for&amp;lt;/code&amp;gt; directive was added that makes coding counting loops much simpler.&lt;br /&gt;
&lt;br /&gt;
===Nested Loops===&lt;br /&gt;
Loops can of course be nested. This capability is often used to lay out very large numbers of objects using an economical amount of code.&lt;br /&gt;
&lt;br /&gt;
First, here's a very simple, complete scene file containing a nested &amp;lt;code&amp;gt;#while&amp;lt;/code&amp;gt; loop with which you can play:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=pov&amp;gt;&lt;br /&gt;
#include &amp;quot;colors.inc&amp;quot;&lt;br /&gt;
#include &amp;quot;woods.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
camera {location &amp;lt;-1.5,0.9,-0.08&amp;gt; look_at &amp;lt;0,0.7,0.5&amp;gt;}  &lt;br /&gt;
light_source {&amp;lt;-20,75,-100&amp;gt; White}&lt;br /&gt;
background {LightBlue}&lt;br /&gt;
plane {y,0 pigment {color GreenYellow}&lt;br /&gt;
&lt;br /&gt;
#declare RandomSeed = seed(1);&lt;br /&gt;
#declare XCount=0;&lt;br /&gt;
#while (XCount &amp;lt; 200)&lt;br /&gt;
  #declare ZCount=0;&lt;br /&gt;
  #while (ZCount &amp;lt; 200)&lt;br /&gt;
    box {&amp;lt;-0.05,0,-0.05&amp;gt;&amp;lt;0.05,1,0.05&amp;gt;&lt;br /&gt;
      rotate &amp;lt;3*rand(RandomSeed),5*rand(RandomSeed),3*rand(RandomSeed)&amp;gt;&lt;br /&gt;
      texture {T_Wood1 translate &amp;lt;rand(RandomSeed),ZCount,rand(RandomSeed)&amp;gt; rotate x*90 scale 0.07}&lt;br /&gt;
      translate &amp;lt;XCount,0,ZCount&amp;gt; &lt;br /&gt;
    }&lt;br /&gt;
    #declare ZCount=ZCount+1;&lt;br /&gt;
  #end &lt;br /&gt;
  #declare XCount=XCount+1;&lt;br /&gt;
#end &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's the same looping accomplished with the new &amp;lt;code&amp;gt;#for&amp;lt;/code&amp;gt; loop directive:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=pov&amp;gt;&lt;br /&gt;
#include &amp;quot;colors.inc&amp;quot;&lt;br /&gt;
#include &amp;quot;woods.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
camera {location &amp;lt;-1.5,0.9,-0.08&amp;gt; look_at &amp;lt;0,0.7,0.5&amp;gt;}  &lt;br /&gt;
light_source {&amp;lt;-20,75,-100&amp;gt; White}&lt;br /&gt;
background {LightBlue}&lt;br /&gt;
plane {y,0 pigment {color GreenYellow}&lt;br /&gt;
&lt;br /&gt;
#declare RandomSeed = seed(1);&lt;br /&gt;
#for (XCount,0,199)&lt;br /&gt;
  #for (ZCount,0,199)&lt;br /&gt;
    box {&amp;lt;-0.05,0,-0.05&amp;gt;&amp;lt;0.05,1,0.05&amp;gt;&lt;br /&gt;
      rotate &amp;lt;3*rand(RandomSeed),5*rand(RandomSeed),3*rand(RandomSeed)&amp;gt;&lt;br /&gt;
      texture {T_Wood1 translate &amp;lt;rand(RandomSeed),ZCount,rand(RandomSeed)&amp;gt; rotate x*90 scale 0.07}&lt;br /&gt;
      translate &amp;lt;XCount,0,ZCount&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
  #end&lt;br /&gt;
#end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These example uses 2 nested loops. Each nested loop has its own control variable. It starts with both XCount and YCount equal to zero. With XCount at zero, YCount loops from 0 to 199, then XCount is incremented to 1, YCount is reset to zero and the second loop repeats.&lt;br /&gt;
&lt;br /&gt;
This example also introduces a degree of randomness in each iteration using the POV-Ray seed and rand functions. When generating a large number of objects using loops you'll find that a little randomness goes a long way. This example generates 40,000 wooden posts, each with a little bit of a wobble and each with a slightly different wood texture pattern. It should take about 10 or 20 seconds to render&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=8868</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=8868"/>
		<updated>2016-11-23T13:06:21Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding hook for for loop article.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available 'How To' articles. If you add a new article, please list it here.&lt;br /&gt;
&lt;br /&gt;
Please also read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&lt;br /&gt;
&lt;br /&gt;
==Suggestions==&lt;br /&gt;
&lt;br /&gt;
It would be handy if some users co-operated in working out a 'wishlist' of articles and a hierarchy for them, and then created the links to the empty pages from this page.&lt;br /&gt;
&lt;br /&gt;
Discussions should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&lt;br /&gt;
&lt;br /&gt;
==Completed articles==&lt;br /&gt;
&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
*[[HowTo:Use for loop over traditional while loop | How to: Use for loop over traditional while loop]]&lt;br /&gt;
&lt;br /&gt;
==Work-in-Progress Articles==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use rainbow | How to: Use rainbow]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Platform-specific tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Mac OS / Mac OS X=====&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Unix=====&lt;br /&gt;
&lt;br /&gt;
====Building Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#General POV-Ray troubleshooting | General POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;br /&gt;
&lt;br /&gt;
====General POV-Ray troubleshooting====&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*[[Installation#Troubleshooting | Installation Troubleshooting]]&lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]] &lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests|How to make a feature request]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=8853</id>
		<title>HowTo:Known Issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=8853"/>
		<updated>2016-11-21T11:56:40Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Misc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Known Issues===&lt;br /&gt;
&amp;lt;p&amp;gt;Quick list of general &amp;lt;em&amp;gt;known issues&amp;lt;/em&amp;gt; with the &amp;lt;em&amp;gt;version 3.7&amp;lt;/em&amp;gt; and the &amp;lt;em&amp;gt;3.7.1&amp;lt;/em&amp;gt; pre-release:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unix users. Due to problems with &amp;lt;em&amp;gt;X11&amp;lt;/em&amp;gt; window libraries, some special command line parameters, such as -geometry, are not available. These were previously enabled via X11 itself. However, a preview display can still be enabled if building from source and the optional [http://www.libsdl.org SDL Simple Directmedia Layer (V1.2)] development library is available to link against.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;While utf-8 support is available in scene files, there are still issues with file names using non-ASCII characters. Meaning a user running in utf-8 or equivalent must take care to use only ASCII characters for all scene related file and directory names. See: [https://github.com/POV-Ray/povray/issues/152 github issue 152]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Agressive Anti-Aliasing (AA) usually addresses bright and dark speckles sometimes seen with media where rays glance - tangentially - to a mathematical surface in a way which confuses interval determination for sampling. Further, while using 'sturm on' is usually a help, it tends to make such media speckling worse. Search the newsgroups for more detail.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The developer's issue tracking can be found at [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=8848</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=8848"/>
		<updated>2016-11-19T20:00:26Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Removed histogram item given support was dropped in 3.7.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available 'How To' articles. If you add a new article, please list it here.&lt;br /&gt;
&lt;br /&gt;
Please also read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&lt;br /&gt;
&lt;br /&gt;
==Suggestions==&lt;br /&gt;
&lt;br /&gt;
It would be handy if some users co-operated in working out a 'wishlist' of articles and a hierarchy for them, and then created the links to the empty pages from this page.&lt;br /&gt;
&lt;br /&gt;
Discussions should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&lt;br /&gt;
&lt;br /&gt;
==Completed articles==&lt;br /&gt;
&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
==Work-in-Progress Articles==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use rainbow | How to: Use rainbow]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Platform-specific tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Mac OS / Mac OS X=====&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Unix=====&lt;br /&gt;
&lt;br /&gt;
====Building Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#General POV-Ray troubleshooting | General POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;br /&gt;
&lt;br /&gt;
====General POV-Ray troubleshooting====&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*[[Installation#Troubleshooting | Installation Troubleshooting]]&lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]] &lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests|How to make a feature request]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=8843</id>
		<title>HowTo:Known Issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=8843"/>
		<updated>2016-11-19T13:36:25Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding blurb about media bright/dark speckling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Known Issues===&lt;br /&gt;
&amp;lt;p&amp;gt;Quick list of general &amp;lt;em&amp;gt;known issues&amp;lt;/em&amp;gt; with the &amp;lt;em&amp;gt;version 3.7&amp;lt;/em&amp;gt; and the &amp;lt;em&amp;gt;3.7.1&amp;lt;/em&amp;gt; pre-release:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Due to problems with &amp;lt;em&amp;gt;X11&amp;lt;/em&amp;gt; libraries, some special command line parameters are not available which were previously enabled via X11 are not available. However, a preview display can still be enabled if building from source and the optional [http://www.libsdl.org SDL Simple Directmedia Layer (V1.2)] development library is available to link against.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;While utf-8 support is available in scene files, there are still issues with file names using non-ASCII characters. Meaning a user running in utf-8 or equivalent must take care to use only ASCII characters for all scene related file and directory names. See: [https://github.com/POV-Ray/povray/issues/152 github issue 152]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Agressive Anti-Aliasing (AA) usually addresses bright and dark speckles sometimes seen with media where rays glance - tangentially - to a mathematical surface in a way which confuses interval determination for sampling. Further, while using 'sturm on' is usually a help, it tends to make such media speckling worse. Search the newsgroups for more detail.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The developer's issue tracking can be at [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=8842</id>
		<title>HowTo:Known Issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Known_Issues&amp;diff=8842"/>
		<updated>2016-11-19T13:18:22Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding some items to the know issues entry.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Known Issues===&lt;br /&gt;
&amp;lt;p&amp;gt;Quick list of general &amp;lt;em&amp;gt;known issues&amp;lt;/em&amp;gt; with the &amp;lt;em&amp;gt;version 3.7&amp;lt;/em&amp;gt; and the &amp;lt;em&amp;gt;3.7.1&amp;lt;/em&amp;gt; pre-release:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Due to problems with &amp;lt;em&amp;gt;X11&amp;lt;/em&amp;gt; libraries, some special command line parameters are not available which were previously enabled via X11 are not available. However, a preview display can still be enabled if building from source and the optional [http://www.libsdl.org SDL Simple Directmedia Layer (V1.2)] development library is available to link against.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;While utf-8 support is available in scene files, there are still issues with file names using non-ASCII characters. Meaning a user running in utf-8 or equivalent must take care to use only ASCII characters for all scene related file and directory names. See: [https://github.com/POV-Ray/povray/issues/152 github issue 152]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The developer's issue tracking can be at [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=8841</id>
		<title>HowTo:Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Contents&amp;diff=8841"/>
		<updated>2016-11-19T12:58:09Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: /* General POV-Ray troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a list of the currently-available 'How To' articles. If you add a new article, please list it here.&lt;br /&gt;
&lt;br /&gt;
Please also read our '''[[Help:Editing_Guidelines|Editing Guidelines]]''' prior to creating any articles.&lt;br /&gt;
&lt;br /&gt;
==Suggestions==&lt;br /&gt;
&lt;br /&gt;
It would be handy if some users co-operated in working out a 'wishlist' of articles and a hierarchy for them, and then created the links to the empty pages from this page.&lt;br /&gt;
&lt;br /&gt;
Discussions should be held on the [[HowTo_Talk:Contents|talk]] page, not here.&lt;br /&gt;
&lt;br /&gt;
==Completed articles==&lt;br /&gt;
&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
==Work-in-Progress Articles==&lt;br /&gt;
&lt;br /&gt;
====Animating your creations====&lt;br /&gt;
*[[HowTo:Create animations | How to: Create animations]]&lt;br /&gt;
*[[HowTo:Create more complex animations | How to: Create more complex animations]]&lt;br /&gt;
*[[HowTo:Animation pitfalls | How to: Animation pitfalls]]&lt;br /&gt;
*[[HowTo:Encode animations as Ogg Theora Video | How to: Encode animations as Ogg Theora Video]]  (A non-proprietary video file format)&lt;br /&gt;
&lt;br /&gt;
====Objects====&lt;br /&gt;
*[[HowTo:Use constructive solid geometry | How to: Use constructive solid geometry]]&lt;br /&gt;
*[[HowTo:Use the blob object | How to: Use the blob object]]&lt;br /&gt;
*[[HowTo:Use the isosurface object | How to: Use the isosurface object]]&lt;br /&gt;
*[[HowTo:Use the lathe object | How to: Use the lathe object]]&lt;br /&gt;
*[[HowTo:Use the plane object | How to: Use the plane object]]&lt;br /&gt;
*[[HowTo:Use spline and bezier curves | How to: Use spline and bezier curves]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Texturing====&lt;br /&gt;
*[[HowTo:Use UV-mapping | How to: Use UV-mapping]]&lt;br /&gt;
*[[HowTo:Use an image as a texture | How to: Use an image as a texture]]&lt;br /&gt;
*[[HowTo:Turn a continuous function into a stepped function | How to: Turn a continuous function into a stepped function]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Lighting====&lt;br /&gt;
*[[HowTo:Make soft shadows using the area_light | How to: Make soft shadows using the area_light]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Simulate real-world ambient light]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Simulate real-world optical effects]]&lt;br /&gt;
*[[HowTo:Make realistic outdoor lighting | How to: Make realistic outdoor lighting]]&lt;br /&gt;
*[[HowTo:Make realistic indoor lighting | How to: Make realistic indoor lighting]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Special effects in POV-Ray====&lt;br /&gt;
*[[HowTo:Use fog and media | How to: Use fog and media]]&lt;br /&gt;
*[[HowTo:Use rainbow | How to: Use rainbow]]&lt;br /&gt;
*[[HowTo:Use photons | How to: Use photons]]&lt;br /&gt;
*[[HowTo:Use radiosity | How to: Use radiosity]]&lt;br /&gt;
*[[HowTo:Use sky_sphere and background | How to: Use sky_sphere and background]]&lt;br /&gt;
*[[HowTo:Fix old scenes to work with the new gamma system | How to: Fix old scenes to work with the new gamma system]]&lt;br /&gt;
*[http://www.ldraw.org/Article528.html How to: Render LDraw scenes for polarized glasses] (off site, needs to be re-written in more general terms that are not LDraw-specific)&lt;br /&gt;
*[[HowTo:Manual focal blur | How to create focal blur manually]]&lt;br /&gt;
&lt;br /&gt;
====Special output in POV-Ray====&lt;br /&gt;
*[[HowTo:Create anaglyph images                 | How to: Create anaglyph images]]&lt;br /&gt;
*[[HowTo:High precision heightfields            | How to: Create high precision heightfields using POV-Ray]]&lt;br /&gt;
*[[HowTo:Create images for use as a heightfield | How to: Create images for use as a heightfield]]&lt;br /&gt;
*[[HowTo:Create multi-phase web buttons         | How to: Create multi-phase web buttons]]&lt;br /&gt;
*[[HowTo:ODS                                    | How to: Create omni­directional stereo (ODS) images]]&lt;br /&gt;
*[[HowTo:Utilize the histogram                  | How to: Utilize the histogram]]&lt;br /&gt;
&lt;br /&gt;
====Special input in POV-Ray====&lt;br /&gt;
*[[HowTo:Use SVG images as the basis for prisms and lathes | How to: Use SVG images as the basis for prisms and lathes]]&lt;br /&gt;
&lt;br /&gt;
==== Working with POV-Ray ====&lt;br /&gt;
Platform-specific tips to get the most out of POV-ray:&lt;br /&gt;
*[[HowTo:Install multiple versions of POV-Ray | How to: Install multiple versions of POV-Ray]]&lt;br /&gt;
*[[HowTo:Configure your favorite text editor to work with POV-Ray| How to: Configure your favorite text editor to work with POV-Ray]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Microsoft Windows=====&lt;br /&gt;
*[[HowTo:Take full advantage of the Insert menu | How to: Take full advantage of the Insert menu]]&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Mac OS / Mac OS X=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====POV-Ray for Unix=====&lt;br /&gt;
&lt;br /&gt;
====Building Scenes in POV-Ray====&lt;br /&gt;
*[[HowTo:Build a basic scene | How to: Build a basic scene]]&lt;br /&gt;
*[[HowTo:Plan your scenes | How to: Plan your scenes]]&lt;br /&gt;
*[[HowTo:Place objects on another object | Place objects on another object]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Scene Description Language====&lt;br /&gt;
*[[HowTo:Manage your variables | How to: Manage your variables]]&lt;br /&gt;
*[[HowTo:Use conditional structures | How to: Use conditional structures]]&lt;br /&gt;
*[[HowTo:Use macros and loops | How to: Use macros and loops]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting your scene====&lt;br /&gt;
This section is for figuring out why your scene isn't rendering as expected.  For problems related to installation or removal of POV-Ray, updates, crashes, or other software-related issues, see [[#General POV-Ray troubleshooting | General POV-Ray troubleshooting]].&lt;br /&gt;
*[[HowTo:Fix unexpected image output | Why is my image completely black?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Objects | Why aren't all of my objects showing up?]]&lt;br /&gt;
*[[HowTo:Fix unexpected invisibility#Media | Why doesn't my fog or other media show up?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Coincident surfaces | What are all of these weird speckles on my object?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Isosurfaces | What is the best way to fix holes in my isosurface?]]&lt;br /&gt;
*[[HowTo:Fix artifacts#Floating-point expressions | Why are my expressions not evaluating to 1 (or some other integer)?]]&lt;br /&gt;
&lt;br /&gt;
====General POV-Ray troubleshooting====&lt;br /&gt;
This section is for software problems with POV-Ray.  If you are trying to figure out why your scene isn't rendering as expected, see [[HowTo:Contents#Troubleshooting your scene|Troubleshooting Your Scene]].&lt;br /&gt;
*[[Installation#Troubleshooting | Installation Troubleshooting]]&lt;br /&gt;
*[[HowTo:Known Issues | Known Issues and Possible Work-arounds]] &lt;br /&gt;
*[[HowTo:Make A Bug Report | How to make a Bug Report]]&lt;br /&gt;
*[[HowTo:POV-Ray Feature Requests|How to make a feature request]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:POV-Ray_Feature_Requests&amp;diff=8840</id>
		<title>HowTo:POV-Ray Feature Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:POV-Ray_Feature_Requests&amp;diff=8840"/>
		<updated>2016-11-19T12:39:35Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Updating this section for github issues over our older FlySpray issue tracker.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We all want to see POV-Ray improved, and from time to time it may occur to us that there's a feature that we would like to see, or something we'd like to see improved. The proper place for &amp;quot;feature wishlists&amp;quot; is the bugtracking and feature-request system on [https://github.com/POV-Ray/povray/issues Github], as that's ''the'' primary place where the developers will look for them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;Note&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; We are in the process of porting issues still open in our previous [http://bugs.povray.org/ FlySpray System] to the new &lt;br /&gt;
[https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. During this transition it is necessary to review &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; systems to know if a feature equest has already been made known to the developers. Please open all &amp;lt;em&amp;gt;new&amp;lt;/em&amp;gt; requests in the [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. If a FlySpray issue is marked as 'tracked on github' please make any further comments or updates on github.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When ''making'' feature requests, a word of advice:&lt;br /&gt;
&lt;br /&gt;
Please ''do'' read [[HowTo:Make A Bug Report]] and [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html How to Report Bugs Effectively] before submitting any entries to the issue tracker, and ''do'' heed the advice presented there. By following those rules - or at least keeping them in mind as you file issues - you make life a lot easier for the people you hope to address the issues.&lt;br /&gt;
&lt;br /&gt;
Some other points raised in [http://news.povray.org/povray.advanced-users/thread/%3C4c1d52c5%241%40news.povray.org%3E/] and [http://news.povray.org/povray.general/thread/%3C4c09591e%241%40news.povray.org%3E/]:&lt;br /&gt;
&lt;br /&gt;
* If discussion of a feature request has resulted in a summary or conclusion that differs from the original request, a new feature request should not be made. Instead, the existing one should be changed. This implies contributing ideas to the feature request discussion, and then coming up with a single coherent idea, not leaving it at two half-finished ideas.&lt;br /&gt;
* Closely-related feature requests should be grouped together; e.g. requests for Windows UI enhancements with respect to the editor such as &amp;quot;Delete&amp;quot;, &amp;quot;Reload&amp;quot; and &amp;quot;Rename&amp;quot; commands could reasonably be put into a single request (all at once or via editing a bug later).&lt;br /&gt;
* There is a feature to allow other users and/or developers to comment on bugs &amp;amp; feature requests on github, but this is primarily intended for providing additional information, or feedback on the current status. For proper discussions, it lacks the necessary publicity. (When was the last time anyone just browsed the github just to see if there was some interesting discussion going on in some of the entries?) The POV-Ray community is strongest in the newsgroups. That said, the problem with ''discussions'' about feature requests is that they tend to have ''no'' clear-cut result whatsoever, as they tend do be free brainstorming sessions - unless there's someone with the necessary will and authority (e.g. because he has started the discussion in the first place) &amp;quot;driving&amp;quot; the discussion to a proper conclusion (ideally by summarizing the discussion and result in a proper place). In situations like these, github excels.&lt;br /&gt;
* A sensible rule for opening a new feature request might then be that it must be discussed in the newsgroups first, to weed out crackpot ideas and to refine ideas by feedback from what users actually need. After discussion, the request should only be entered if a member of the POV-Ray team deems the request reasonable (note that a request should not be deemed unreasonable at this point just because it would be too much effort to implement right now).&lt;br /&gt;
* Excessive use/misuse of the newsgroups and github may be considered &amp;quot;vandalism&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=HowTo:Make_A_Bug_Report&amp;diff=8839</id>
		<title>HowTo:Make A Bug Report</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=HowTo:Make_A_Bug_Report&amp;diff=8839"/>
		<updated>2016-11-19T12:25:35Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Updating this section for github issues over our older FlySpray issue tracker.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=====  Reporting bugs in POV-Ray ===== &lt;br /&gt;
&amp;lt;p&amp;gt;Bug reports are an essential part of development, and the developers need you to let them know about programming defects in POV-Ray. However, there are a few things that you need to keep in mind when you are thinking about submitting a bug report or requesting a new feature. Please take a few moments to read this brief list of guidelines ''before'' you open a new task in our [https://github.com/POV-Ray/povray/issues Github Issue Tracking System].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;Note&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; We are in the process of porting issues still open in our previous [http://bugs.povray.org/ FlySpray Bug Reporting System] to the new &lt;br /&gt;
[https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. During this transition it is necessary to review &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; systems to know if an issues has already been made known to the developers. Please open all &amp;lt;em&amp;gt;new&amp;lt;/em&amp;gt; issues in the [https://github.com/POV-Ray/povray/issues Github Issue Tracking System]. If a FlySpray issue is marked as 'tracked on github' please make any further comments or updates on github.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===== Guidelines for opening new tasks =====&lt;br /&gt;
* Take some minutes of your time and read [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html this] document, it will teach you how to report a bug correctly.&lt;br /&gt;
* If you're not sure it's a bug, or how to report it, chat with the folks in the [http://news.povray.org/povray.beta-test/ beta-test forum].&lt;br /&gt;
* We cannot accept bug reports for modified versions of POV-Ray.&lt;br /&gt;
* In almost all cases where a rendering bug is being reported, we require a minimal sample scene causing the bug be submitted, as well as an image showing the problem.&lt;br /&gt;
* Always perform a search on '''both open and closed''' 'issues' or 'tasks' before opening a new one. Your bug might already have been reported, or your feature requested.&lt;br /&gt;
* Use the English language in any tasks you open.  Nothing will get done if we can't understand you.&lt;br /&gt;
* Only report one bug or request one feature per task.&lt;br /&gt;
* If you report a bug, and we mark it as 'requires testing', then please test it and add a comment to the task telling us how well it works.&lt;br /&gt;
* If a task is closed as fixed then try the [https://github.com/POV-Ray/povray/releases development version] before requesting that it be re-opened.&lt;br /&gt;
* If we deny your request to re-open a task, check the history/comments for our reason. If you are unsatisfied with the reason, you are welcome to discuss it in the [http://news.povray.org/ forums].&lt;br /&gt;
* Be polite.  Remember that you got POV-Ray for free.&lt;br /&gt;
&lt;br /&gt;
===== Text formatting tips =====&lt;br /&gt;
Github allows for a lot more formatting within task descriptions and comments. Here are a few helpful essentials:&lt;br /&gt;
* To quote some other comment, use the github quote feature after marking the text to be quoted.&lt;br /&gt;
* To make code, use the mark code feature of github after marking your code.&lt;br /&gt;
* Refer to github issues and pull request by number prefixed with # and github will create the link. Please refer to older Flyspray tasks not yet ported by their numeric id preceded by &amp;quot;&amp;lt;tt&amp;gt;FS#&amp;lt;/tt&amp;gt;&amp;quot; (e.g. &amp;lt;tt&amp;gt;FS#123&amp;lt;/tt&amp;gt;) and perhaps insert the URL for as github will create the corresponding link.&lt;br /&gt;
* Do make use of the preview button.&lt;br /&gt;
&lt;br /&gt;
===== Miscellaneous =====&lt;br /&gt;
* To illustrate your bug report or comment with images, test scenes or zip files, please do make use of the &amp;quot;attach file&amp;quot; functionality, rather than linking to some 3rd party image hosting site. This way the uploaded files will remain accessible as long as the github issue persists. Note when uploading scene related files the POV-Ray extensions of .pov and .inc are not supported; needing an additional .txt suffix before upload. Further .tar and .gz files are '''not''' supported as of this writing, but rather only .zip. &lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Knowledgebase:POV-Ray Feature Requests]]&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8792</id>
		<title>Reference Talk:Tiling Pattern</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8792"/>
		<updated>2016-09-27T14:43:04Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Cleanup. Moved information into tiling.pov example.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8787</id>
		<title>Reference Talk:Tiling Pattern</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8787"/>
		<updated>2016-09-25T14:47:14Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Table border to 5px&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Adding a table of unit square normalization scales. &lt;br /&gt;
&lt;br /&gt;
[[Category:Patterns]]&lt;br /&gt;
{{#indexentry:tiling, keyword}}&lt;br /&gt;
{{#indexentry:tiling, pattern}}&lt;br /&gt;
{{#indexentry:keyword, tiling}}&lt;br /&gt;
{{#indexentry:pattern, tiling}}&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;code&amp;gt;tiling&amp;lt;/code&amp;gt; pattern creates a series tiles in the x-z plane. See the image below for examples of the twenty-seven available patterns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pigment {&lt;br /&gt;
  tiling Pattern_Number&lt;br /&gt;
  [PATTERN_MODIFIERS...]&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;centered&amp;quot; width=&amp;quot;580px&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[Image:RefImgTiling2.gif|center|560px&amp;lt;!--centered---&amp;gt;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;The various tiling patterns annotated by tiling pattern and tiling type respectively&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For each pattern, each individual tile of the pattern has the same beveling as the other tiles in that pattern, allowing regular caulking to be defined. For a pattern with N tile types (where N is the tiling type noted in the above image) the main color/texture of the tiles are at x/N with x going from 0 to N-1, and the extreme color/texture caulk for these tiles are at (x+1)/N. The bevel covers the range between these two values.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To begin exploring the &amp;lt;code&amp;gt;tiling&amp;lt;/code&amp;gt; pattern right away, see the distribution file &amp;lt;code&amp;gt;~scenes/textures/pattern/tiling.pov&amp;lt;/code&amp;gt;. It uses obvious colors to better illustrate how the feature works, and you can optionally write it's &amp;lt;code&amp;gt;color_map&amp;lt;/code&amp;gt; to a text file. Once you get a feel for the break points, you can always define you own map!&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The scale required to fit the core repeated tile into a unit square size for each tiling pattern is given in the table below.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;centered&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;5&amp;quot; border-collapse=&amp;quot;collapse&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Tiling Number&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Unit square normalization scale&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 1&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,1&amp;gt;                                &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 2&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;2/3,1,1/sqrt(3)&amp;gt;                      &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 3&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,2/sqrt(3)&amp;gt;                        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 4&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,2/sqrt(3)&amp;gt;                        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 5&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;2/3,1,1/sqrt(3)&amp;gt;                      &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 6&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/4,1,1/4&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 7&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(2)+1),1,1/(sqrt(2)+1)&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 8&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,1/(sqrt(3)+2)&amp;gt;                    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/2,1,1/(2*sqrt(3))&amp;gt;                  &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,1/2&amp;gt;                              &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/3,1,1/3&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/3,1,1/3&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+1),1,1/(sqrt(3)+1)&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+1),1,1/(sqrt(3)+1)&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/5,1,1/5&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+3),1,1/((sqrt(3)+1.0)*2.0)&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+3),1,1/((sqrt(3)+1.0)*2.0)&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/4,1,1/4&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/2,1,1/((sqrt(3)/2)*3)&amp;gt;              &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/2,1,1/((sqrt(3)/2)*3)&amp;gt;              &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;21&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(1+sqrt(3)),1,1/(1+sqrt(3))&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;22&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(2+sqrt(3)),1,1/(3+(2*sqrt(3)))&amp;gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;23&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(3+sqrt(3)),1,1/(3+(3*sqrt(3)))&amp;gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;24&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(3+sqrt(3)),1,1/(3+(3*sqrt(3)))&amp;gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;25&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(4*sqrt(2)),1,1/(4*sqrt(2))&amp;gt;  (*)   &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;26&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(4*sqrt(2)),1,1/(4*sqrt(2))&amp;gt;  (*)   &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(4*sqrt(2)),1,1/(4*sqrt(2))&amp;gt;  (*)   &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;(*) - Unit square scaling not possible with penrose tiling. Scaling given useful to see all tiles in a way symmetrical in z.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8765</id>
		<title>Reference Talk:Tiling Pattern</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8765"/>
		<updated>2016-09-23T17:47:04Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding table of tiling to unit square scaling vectors.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Adding a table of unit square normalization scales. &lt;br /&gt;
&lt;br /&gt;
[[Category:Patterns]]&lt;br /&gt;
{{#indexentry:tiling, keyword}}&lt;br /&gt;
{{#indexentry:tiling, pattern}}&lt;br /&gt;
{{#indexentry:keyword, tiling}}&lt;br /&gt;
{{#indexentry:pattern, tiling}}&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;code&amp;gt;tiling&amp;lt;/code&amp;gt; pattern creates a series tiles in the x-z plane. See the image below for examples of the twenty-seven available patterns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pigment {&lt;br /&gt;
  tiling Pattern_Number&lt;br /&gt;
  [PATTERN_MODIFIERS...]&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;centered&amp;quot; width=&amp;quot;580px&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[Image:RefImgTiling2.gif|center|560px&amp;lt;!--centered---&amp;gt;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;The various tiling patterns annotated by tiling pattern and tiling type respectively&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For each pattern, each individual tile of the pattern has the same beveling as the other tiles in that pattern, allowing regular caulking to be defined. For a pattern with N tile types (where N is the tiling type noted in the above image) the main color/texture of the tiles are at x/N with x going from 0 to N-1, and the extreme color/texture caulk for these tiles are at (x+1)/N. The bevel covers the range between these two values.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To begin exploring the &amp;lt;code&amp;gt;tiling&amp;lt;/code&amp;gt; pattern right away, see the distribution file &amp;lt;code&amp;gt;~scenes/textures/pattern/tiling.pov&amp;lt;/code&amp;gt;. It uses obvious colors to better illustrate how the feature works, and you can optionally write it's &amp;lt;code&amp;gt;color_map&amp;lt;/code&amp;gt; to a text file. Once you get a feel for the break points, you can always define you own map!&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The scale required to fit the core repeated tile into a unit square size for each tiling pattern is given in the table below.&amp;lt;/p&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;centered&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;2px solid black&amp;quot; border-collapse=&amp;quot;collapse&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Tiling Number&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Unit square normalization scale&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 1&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,1&amp;gt;                                &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 2&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;2/3,1,1/sqrt(3)&amp;gt;                      &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 3&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,2/sqrt(3)&amp;gt;                        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 4&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,2/sqrt(3)&amp;gt;                        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 5&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;2/3,1,1/sqrt(3)&amp;gt;                      &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 6&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/4,1,1/4&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 7&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(2)+1),1,1/(sqrt(2)+1)&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 8&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,1/(sqrt(3)+2)&amp;gt;                    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 9&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/2,1,1/(2*sqrt(3))&amp;gt;                  &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;10&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1,1,1/2&amp;gt;                              &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;11&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/3,1,1/3&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;12&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/3,1,1/3&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;13&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+1),1,1/(sqrt(3)+1)&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;14&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+1),1,1/(sqrt(3)+1)&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;15&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/5,1,1/5&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;16&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+3),1,1/((sqrt(3)+1.0)*2.0)&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(sqrt(3)+3),1,1/((sqrt(3)+1.0)*2.0)&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;18&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/4,1,1/4&amp;gt;                            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;19&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/2,1,1/((sqrt(3)/2)*3)&amp;gt;              &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;20&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/2,1,1/((sqrt(3)/2)*3)&amp;gt;              &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;21&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(1+sqrt(3)),1,1/(1+sqrt(3))&amp;gt;        &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;22&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(2+sqrt(3)),1,1/(3+(2*sqrt(3)))&amp;gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;23&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(3+sqrt(3)),1,1/(3+(3*sqrt(3)))&amp;gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;24&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(3+sqrt(3)),1,1/(3+(3*sqrt(3)))&amp;gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;25&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(4*sqrt(2)),1,1/(4*sqrt(2))&amp;gt;  (*)   &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;26&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(4*sqrt(2)),1,1/(4*sqrt(2))&amp;gt;  (*)   &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;27&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;1/(4*sqrt(2)),1,1/(4*sqrt(2))&amp;gt;  (*)   &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;(*) - Unit square scaling not possible with penrose tiling. Scaling given useful to see all tiles in a way symmetrical in z.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8764</id>
		<title>Reference Talk:Tiling Pattern</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=Reference_Talk:Tiling_Pattern&amp;diff=8764"/>
		<updated>2016-09-23T17:07:48Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Initial copy of tiling pattern page to prep for update.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Adding a table of unit square normalization scales. &lt;br /&gt;
&lt;br /&gt;
[[Category:Patterns]]&lt;br /&gt;
{{#indexentry:tiling, keyword}}&lt;br /&gt;
{{#indexentry:tiling, pattern}}&lt;br /&gt;
{{#indexentry:keyword, tiling}}&lt;br /&gt;
{{#indexentry:pattern, tiling}}&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;code&amp;gt;tiling&amp;lt;/code&amp;gt; pattern creates a series tiles in the x-z plane. See the image below for examples of the twenty-seven available patterns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pigment {&lt;br /&gt;
  tiling Pattern_Number&lt;br /&gt;
  [PATTERN_MODIFIERS...]&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;centered&amp;quot; width=&amp;quot;580px&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;[[Image:RefImgTiling2.gif|center|560px&amp;lt;!--centered---&amp;gt;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;The various tiling patterns annotated by tiling pattern and tiling type respectively&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For each pattern, each individual tile of the pattern has the same beveling as the other tiles in that pattern, allowing regular caulking to be defined. For a pattern with N tile types (where N is the tiling type noted in the above image) the main color/texture of the tiles are at x/N with x going from 0 to N-1, and the extreme color/texture caulk for these tiles are at (x+1)/N. The bevel covers the range between these two values.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To begin exploring the &amp;lt;code&amp;gt;tiling&amp;lt;/code&amp;gt; pattern right away, see the distribution file &amp;lt;code&amp;gt;~scenes/textures/pattern/tiling.pov&amp;lt;/code&amp;gt;. It uses obvious colors to better illustrate how the feature works, and you can optionally write it's &amp;lt;code&amp;gt;color_map&amp;lt;/code&amp;gt; to a text file. Once you get a feel for the break points, you can always define you own map!&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
	<entry>
		<id>https://wiki.povray.org/content?title=Reference_Talk:UV_Mapping&amp;diff=8763</id>
		<title>Reference Talk:UV Mapping</title>
		<link rel="alternate" type="text/html" href="https://wiki.povray.org/content?title=Reference_Talk:UV_Mapping&amp;diff=8763"/>
		<updated>2016-09-23T16:41:21Z</updated>

		<summary type="html">&lt;p&gt;Wfpokorny: Adding lemon object to list supported for uv mapping.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Additional uv mapping supported objects.  &lt;br /&gt;
&lt;br /&gt;
==Supported Objects==&lt;br /&gt;
&amp;lt;p&amp;gt;Surface mapping is currently defined for the following objects:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;bicubic_patch&amp;lt;/strong&amp;gt; : UV coordinates are based on the patch's parametric coordinates. They stretch with the control points. The default range is (0..1) and can be changed.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;box&amp;lt;/strong&amp;gt; : the image is &amp;lt;em&amp;gt;wrapped&amp;lt;/em&amp;gt; around the box, as shown below.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;lathe, sor&amp;lt;/strong&amp;gt; : modified spherical mapping... the u coordinate (0..1) wraps around the y axis, while the v coordinate is linked to the object's control points (also ranging 0..1). Surface of Revolution also has special disc mapping on the end caps if the object is not 'open'.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;mesh, mesh2&amp;lt;/strong&amp;gt; : UV coordinates are defined for each vertex and interpolated between.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;lemon&amp;lt;/strong&amp;gt; : cylindrical mapping wrapped around the axis from the base point to the cap point.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;ovus&amp;lt;/strong&amp;gt; : spherical mapping centered near the center of mass of the ovus (moving from one sphere to another as the ratio of radius progresses).&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;parametric&amp;lt;/strong&amp;gt; : In this case the map is not taken from a fixed set of coordinates but the map is taken from the area defined by the boundaries of the uv-space, in which the parametric surface has to be calculated.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;sphere&amp;lt;/strong&amp;gt; : boring spherical mapping.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;torus&amp;lt;/strong&amp;gt; : The map is taken from the area &amp;amp;lt;0,0&amp;amp;gt;&amp;amp;lt;1,1&amp;amp;gt; where the u-coordinate is wrapped around the major radius and the the v-coordinate is wrapped around the minor radius. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wfpokorny</name></author>
	</entry>
</feed>