diff options
Diffstat (limited to 'render_povray/templates_pov/gamma_showcase.pov')
-rw-r--r-- | render_povray/templates_pov/gamma_showcase.pov | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/render_povray/templates_pov/gamma_showcase.pov b/render_povray/templates_pov/gamma_showcase.pov new file mode 100644 index 00000000..d601868f --- /dev/null +++ b/render_povray/templates_pov/gamma_showcase.pov @@ -0,0 +1,189 @@ +// This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. +// To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a +// letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. + +// Persistence of Vision Ray Tracer Scene Description File +// File: gamma_showcase.pov +// Vers: 3.7 +// Desc: Gamma Handling Test Scene - An arrangement of spheres on a marble plane +// Date: 2010-12-21 +// Auth: Christoph Lipka +// MORE INFORMATION: http://wiki.povray.org/content/Documentation:Tutorial_Section_3.3#Gamma_Handling +// + +// +w640 +h480 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase.png +// +w640 +h480 +a0.3 +am1 +fN -d File_Gamma=1.0 Output_File_Name=gamma_showcase_linear.png +// +w320 +h240 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase_ref0.png Declare=Stripes=off +// +w320 +h240 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase_ref1.png Declare=Stripes=off Declare=Gamma=1.2 +// +w320 +h240 +a0.3 +am1 +fN -d File_Gamma=sRGB Output_File_Name=gamma_showcase_ref2.png Declare=Stripes=off Declare=Gamma=0.8 +// +w640 +h480 +a0.3 +am1 -f +d + +#version 3.7; + +#include "colors.inc" +#include "stones.inc" + +#ifndef (Stripes) + #declare Stripes = on; +#end +#ifndef (Gamma) + #declare Gamma = 1.0; +#end + +global_settings { + max_trace_level 5 + assumed_gamma 1.0 + radiosity { + pretrace_start 0.08 + pretrace_end 0.01 + count 35 + nearest_count 5 + error_bound 1.8 + recursion_limit 2 + low_error_factor .5 + gray_threshold 0.0 + minimum_reuse 0.015 + brightness 1 + adc_bailout 0.01/2 + } +} + +#default { + texture { + pigment {rgb 1} + finish { + ambient 0.0 + diffuse 0.6 + specular 0.6 roughness 0.001 + reflection { 0.0 1.0 fresnel on } + conserve_energy + } + } +} + +// ---------------------------------------- + +#local TestRed = rgb <0.5,0.1,0.1>; +#local TestGreen = rgb <0.1,0.5,0.1>; +#local TestBlue = rgb <0.1,0.1,0.5>; + +#local CameraFocus = <0,0.5,0>; +#local CameraDist = 8; +#local CameraDepth = 1.8; +#local CameraTilt = 20; + +camera { + location <0,0,0> + direction z*CameraDepth + right x*image_width/image_height + up y + translate <0,0,-CameraDist> + rotate x*CameraTilt + translate CameraFocus +} + +#macro LightSource(Pos,Color) + light_source { + Pos + color Color + spotlight + point_at <0,0,0> + radius 175/vlength(Pos) + falloff 200/vlength(Pos) + area_light x*vlength(Pos)/10, y*vlength(Pos)/10, 9,9 adaptive 1 jitter circular orient + } + +#end + +LightSource(<-500,500,-500>,TestRed + <0.2,0.2,0.2>) +LightSource(< 0,500,-500>,TestGreen + <0.2,0.2,0.2>) +LightSource(< 500,500,-500>,TestBlue + <0.2,0.2,0.2>) + +// ---------------------------------------- + +#macro DarkStripeBW(TargetBrightness) + #if (TargetBrightness < 0.5) + (0.0) + #else + (TargetBrightness*2 - 1.0) + #end +#end + +#macro BrightStripeBW(TargetBrightness) + #if (TargetBrightness < 0.5) + (TargetBrightness*2) + #else + (1.0) + #end +#end + +#macro DarkStripeRGB(TargetColor) + <DarkStripeBW(TargetColor.red),DarkStripeBW(TargetColor.green),DarkStripeBW(TargetColor.blue)> +#end + +#macro BrightStripeRGB(TargetColor) + <BrightStripeBW(TargetColor.red),BrightStripeBW(TargetColor.green),BrightStripeBW(TargetColor.blue)> +#end + +#macro StripedPigment(TargetColor) + #if (Stripes) + function { abs(mod(abs(image_height*CameraDepth*y/z+0.5),2.0)-1.0) } + color_map { + [0.5 color rgb DarkStripeRGB(TargetColor) ] + [0.5 color rgb BrightStripeRGB(TargetColor) ] + } + translate <0,0,-CameraDist> + rotate x*CameraTilt + translate CameraFocus + #else + color TargetColor + #end +#end + + +plane { + y, 0 + texture { T_Stone11 } + interior { ior 1.5 } +} + +#macro GammaAdjust(C,G) + #local C2 = color rgbft <pow(C.red,G),pow(C.green,G),pow(C.blue,G),pow(C.filter,G),pow(C.transmit,G)>; + (C2) +#end + +#macro TestSphere(Pos,Radius,TargetColor,Split) + sphere { + Pos + y*Radius, Radius + texture { pigment { color GammaAdjust(TargetColor,Gamma) } } + interior { ior 1.5 } + } + #if (Split) + sphere { + Pos + y*Radius + x*0.001, Radius + texture { pigment { StripedPigment(TargetColor) } } + interior { ior 1.5 } + } + #end +#end + +TestSphere(<-2,0,1>, 1, TestRed, true) +TestSphere(< 0,0,1>, 1, TestGreen, true) +TestSphere(< 2,0,1>, 1, TestBlue, true) + +#local Steps = 6; +#for(I,0,1,1/Steps) + #if (I < 0.5) + #local Color2 = TestRed; + #else + #local Color2 = TestBlue; + #end + #local P = abs(I-0.5)*2; + TestSphere(<I*4-2,0,-0.5>, 2/Steps, (1-P)*TestGreen + P*Color2, true) +#end + +#local Steps = 8; +#for(I,0,1,1/Steps) + TestSphere(<I*4-2,0,-1.5>, 2/Steps, rgb I, true) + TestSphere(<I*4-2,0,-2.0>, 2/Steps, GammaAdjust(rgb I, 2.2*Gamma), false) +#end |