/usr/share/k3d/shaders/k3d_displace.h is in k3d-data 0.8.0.3-3build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | /************************************************************************
* displace.h - Routines for displacing
*
* Author: Larry Gritz (gritzl@acm.org)
*
* Reference:
* _Advanced RenderMan: Creating CGI for Motion Picture_,
* by Anthony A. Apodaca and Larry Gritz, Morgan Kaufmann, 1999.
*
* $Revision: 1.1 $ $Date: 2004/05/19 18:15:19 $
*
************************************************************************/
#ifndef DISPLACE_H
#define DISPLACE_H 1
/* Combine displacement and bump mapping, with units relative to
* a particular space. When truedisp != 0, this function modifies
* P as a side effect.
*
* Inputs:
* dir direction in which to push the surface, assumed to
* already be in "current" space and normalized.
* amp amplitude of the actual displacement or bumping.
* space the name of the coordinate system against which the
* amplitude is measured.
* truedisp when 1, truly displace; when 0, just bump.
* Return value: the normal of the displaced and bumped surface,
* in "current" space, normalized.
*/
normal Displace (vector dir; string space;
float amp; float truedisp;)
{
extern point P;
float spacescale = length(vtransform(space, dir));
vector Ndisp = dir * (amp / max(spacescale,1e-6));
P += truedisp * Ndisp;
return normalize (calculatenormal (P + (1-truedisp)*Ndisp));
}
#endif /* DISPLACE_H */
|