POV-Ray : Newsgroups : povray.general : Colors clamped in pigment Server Time
25 Dec 2024 09:11:09 EST (-0500)
  Colors clamped in pigment (Message 1 to 2 of 2)  
From: FlyerX
Subject: Colors clamped in pigment
Date: 4 Apr 2014 16:27:30
Message: <533f15b2$1@news.povray.org>
Hello,

I am trying to take an HDR image and convert it to grayscale by 
calculating the luminance of the pigment using all three color 
components. Unfortunately when I do that the resulting gray color is 
clipped at 1.0. Any higher values from the original image would cycle 
between 0 and 1. Any way of getting around this issue? Maybe is the 
macro I am using. I suspect is the color_map that clips it.

Code below for the lighting sphere I use:

sphere {<0,0,0>,15000
texture{
	pigment{pigment_intensity(pigment {
image_map{hdr "Chelsea_Stairs_Env.hdr" interpolate 2 map_type 1}	})}
finish{diffuse 0 ambient 0 emission 1 specular 0 phong 0 reflection{0}}
}
no_shadow
no_reflection
hollow
}


here is the macro I use:

#macro pigment_intensity(p1)
#local PR1 = function {pigment{p1}}
#local PR_FRed=function (x,y,z) 
{0.2126*PR1(x,y,z).red+0.7152*PR1(x,y,z).green+0.0722*PR1(x,y,z).blue}
#local PR_FGrn=function (x,y,z) 
{0.2126*PR1(x,y,z).red+0.7152*PR1(x,y,z).green+0.0722*PR1(x,y,z).blue}
#local PR_FBlu=function (x,y,z) 
{0.2126*PR1(x,y,z).red+0.7152*PR1(x,y,z).green+0.0722*PR1(x,y,z).blue}
average pigment_map{
     [function{PR_FRed(x,y,z)} color_map{[0 rgb 0][1 rgb <1,0,0>*3]}]
     [function{PR_FGrn(x,y,z)} color_map{[0 rgb 0][1 rgb <0,1,0>*3]}]
     [function{PR_FBlu(x,y,z)} color_map{[0 rgb 0][1 rgb <0,0,1>*3]}]
   }
#end

Thanks for any help on this.


Post a reply to this message

From: scott
Subject: Re: Colors clamped in pigment
Date: 7 Apr 2014 04:29:45
Message: <534261f9$1@news.povray.org>
Try something like this, set MAX_COLOUR to the highest value you expect 
to see from the functions.



  average pigment_map{

       [function{PR_FRed(x,y,z)/MAX_COLOUR} color_map{[0 rgb 0][1 rgb 
<1,0,0>*3*MAX_COLOUR]}]
       [function{PR_FGrn(x,y,z)/MAX_COLOUR} color_map{[0 rgb 0][1 rgb 
<0,1,0>*3*MAX_COLOUR]}]
       [function{PR_FBlu(x,y,z)/MAX_COLOUR} color_map{[0 rgb 0][1 rgb 
<0,0,1>*3*MAX_COLOUR]}]

     }


Post a reply to this message

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