Package org.jmol.util

Class Shader


  • public class Shader
    extends Object

    All 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 Detail

      • 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
      • sphereShapeCache

        public int[][] sphereShapeCache
      • ellipsoidShades

        public byte[][][] ellipsoidShades
      • nOut

        public int nOut
      • nIn

        public int nIn
    • Constructor Detail

      • Shader

        public Shader()
    • 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()