Package org.jmol.util
Class Shader
- java.lang.Object
-
- org.jmol.util.Shader
-
public class Shader extends java.lang.ObjectAll functions. Implements the shading of RGB values to support shadow and lighting highlights.
Each RGB value has 64 shades. shade[0] represents ambient lighting. shade[63] is white ... a full specular highlight.
- Author:
- Miguel, miguel@jmol.org, Bob Hanson, hansonr@stolaf.edu, N David Brown -- cel shading
-
-
Field Summary
Fields Modifier and Type Field Description (package private) floatambientFraction(package private) intambientPercentprivate int[][]ashadesprivate int[][]ashadesGreyscale(package private) booleancelOn(package private) intcelPowerprivate intcelRGBprivate floatcelZ(package private) floatdiffuseFactor(package private) intdiffusePercentbyte[][][]ellipsoidShades(package private) floatintenseFraction(package private) javajs.util.V3lightSourcestatic intmaxSphereCacheintnInintnOut(package private) intphongExponentprivate static intSDIMprivate intseedstatic intSHADE_INDEX_LASTprivate static intSHADE_INDEX_MAXstatic byteSHADE_INDEX_NOISY_LIMITstatic byteSHADE_INDEX_NORMALprivate static intSLIM(package private) intspecularExponent(package private) floatspecularFactor(package private) booleanspecularOn(package private) intspecularPercent(package private) intspecularPowerbyte[]sphereShadeIndexesint[][]sphereShapeCacheprivate booleanuseLight(package private) booleanusePhongExponentprivate floatxLightprivate floatyLightprivate floatzLight
-
Constructor Summary
Constructors Constructor Description Shader()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcalcSphereShading()private voidcheckShades(int n)voidcreateEllipsoidShades()(package private) voidflushCaches()intgetEllipsoidShade(float x, float y, float z, int radius, javajs.util.M4 mDeriv)bytegetShadeB(float x, float y, float z)private floatgetShadeF(float x, float y, float z)intgetShadeFp8(float x, float y, float z)intgetShadeIndex(float x, float y, float z)bytegetShadeN(float x, float y, float z, float r)(package private) int[]getShades(short colix)private int[]getShades2(int rgb, boolean greyScale)(package private) int[]getShadesG(short colix)intnextRandom8Bit()Implements RANDU algorithm for random noise in lighting/shading.(package private) voidsetCel(boolean celShading, int celShadingPower, int argb)voidsetLastColix(int argb, boolean asGrey)private voidsetLightSource(float x, float y, float z)
-
-
-
Field Detail
-
SHADE_INDEX_MAX
private static final int SHADE_INDEX_MAX
- See Also:
- Constant Field Values
-
SHADE_INDEX_LAST
public static final int SHADE_INDEX_LAST
- See Also:
- Constant Field Values
-
SHADE_INDEX_NORMAL
public static final byte SHADE_INDEX_NORMAL
- See Also:
- Constant Field Values
-
SHADE_INDEX_NOISY_LIMIT
public static final byte SHADE_INDEX_NOISY_LIMIT
- See Also:
- Constant Field Values
-
xLight
private float xLight
-
yLight
private float yLight
-
zLight
private float zLight
-
lightSource
javajs.util.V3 lightSource
-
specularOn
boolean specularOn
-
usePhongExponent
boolean usePhongExponent
-
ambientPercent
int ambientPercent
-
diffusePercent
int diffusePercent
-
specularExponent
int specularExponent
-
specularPercent
int specularPercent
-
specularPower
int specularPower
-
phongExponent
int phongExponent
-
ambientFraction
float ambientFraction
-
diffuseFactor
float diffuseFactor
-
intenseFraction
float intenseFraction
-
specularFactor
float specularFactor
-
ashades
private int[][] ashades
-
ashadesGreyscale
private int[][] ashadesGreyscale
-
celOn
boolean celOn
-
celPower
int celPower
-
celRGB
private int celRGB
-
celZ
private float celZ
-
useLight
private boolean useLight
-
sphereShadeIndexes
public byte[] sphereShadeIndexes
-
seed
private int seed
-
SLIM
private static final int SLIM
- See Also:
- Constant Field Values
-
SDIM
private static final int SDIM
- See Also:
- Constant Field Values
-
maxSphereCache
public static final int maxSphereCache
- See Also:
- Constant Field Values
-
sphereShapeCache
public int[][] sphereShapeCache
-
ellipsoidShades
public byte[][][] ellipsoidShades
-
nOut
public int nOut
-
nIn
public int nIn
-
-
Method Detail
-
setLightSource
private void setLightSource(float x, float y, float z)
-
setCel
void setCel(boolean celShading, int celShadingPower, int argb)
-
flushCaches
void flushCaches()
-
setLastColix
public void setLastColix(int argb, boolean asGrey)
-
getShades
int[] getShades(short colix)
-
getShadesG
int[] getShadesG(short colix)
-
checkShades
private void checkShades(int n)
-
getShades2
private int[] getShades2(int rgb, boolean greyScale)
-
getShadeIndex
public int getShadeIndex(float x, float y, float z)
-
getShadeB
public byte getShadeB(float x, float y, float z)
-
getShadeFp8
public int getShadeFp8(float x, float y, float z)
-
getShadeF
private float getShadeF(float x, float y, float z)
-
getShadeN
public byte getShadeN(float x, float y, float z, float r)
-
calcSphereShading
private void calcSphereShading()
-
nextRandom8Bit
public int nextRandom8Bit()
Implements RANDU algorithm for random noise in lighting/shading.
RANDU is the classic example of a poor random number generator. But it is very cheap to calculate and is good enough for our purposes.
- Returns:
- Next random
-
getEllipsoidShade
public int getEllipsoidShade(float x, float y, float z, int radius, javajs.util.M4 mDeriv)
-
createEllipsoidShades
public void createEllipsoidShades()
-
-