Package org.jmol.util

Class Shader

java.lang.Object
org.jmol.util.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 Details

    • SHADE_INDEX_MAX

      private static final int SHADE_INDEX_MAX
      See Also:
    • SHADE_INDEX_LAST

      public static final int SHADE_INDEX_LAST
      See Also:
    • SHADE_INDEX_NORMAL

      public static final byte SHADE_INDEX_NORMAL
      See Also:
    • SHADE_INDEX_NOISY_LIMIT

      public static final byte SHADE_INDEX_NOISY_LIMIT
      See Also:
    • 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:
    • SDIM

      private static final int SDIM
      See Also:
    • maxSphereCache

      public static final int maxSphereCache
      See Also:
    • sphereShapeCache

      public int[][] sphereShapeCache
    • ellipsoidShades

      public byte[][][] ellipsoidShades
    • nOut

      public int nOut
    • nIn

      public int nIn
  • Constructor Details

    • Shader

      public Shader()
  • Method Details

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