Class SinglePassAndImageBasedLightingLogic

java.lang.Object
com.jme3.material.logic.DefaultTechniqueDefLogic
com.jme3.material.logic.SinglePassAndImageBasedLightingLogic
All Implemented Interfaces:
TechniqueDefLogic

public final class SinglePassAndImageBasedLightingLogic extends DefaultTechniqueDefLogic
  • Constructor Details

    • SinglePassAndImageBasedLightingLogic

      public SinglePassAndImageBasedLightingLogic(TechniqueDef techniqueDef)
  • Method Details

    • makeCurrent

      public Shader makeCurrent(AssetManager assetManager, RenderManager renderManager, EnumSet<Caps> rendererCaps, LightList lights, DefineList defines)
      Description copied from interface: TechniqueDefLogic
      Determine the shader to use for the given geometry / material combination.
      Specified by:
      makeCurrent in interface TechniqueDefLogic
      Overrides:
      makeCurrent in class DefaultTechniqueDefLogic
      Parameters:
      assetManager - The asset manager to use for loading shader source code, shader nodes, and lookup textures.
      renderManager - The render manager for which rendering is to be performed.
      rendererCaps - Renderer capabilities. The returned shader must support these capabilities.
      lights - The lights with which the geometry shall be rendered. This list must not include culled lights.
      defines - The define list used by the technique, any unmapped defines should be set here to change shader behavior.
      Returns:
      The shader to use for rendering.
    • updateLightListUniforms

      protected int updateLightListUniforms(Shader shader, Geometry g, LightList lightList, int numLights, RenderManager rm, int startIndex, int lastTexUnit)
      Uploads the lights in the light list as two uniform arrays.

      uniform vec4 g_LightColor[numLights]; // g_LightColor.rgb is the diffuse/specular color of the light. // g_LightColor.a is the type of light, 0 = Directional, 1 = Point, 2 = Spot. uniform vec4 g_LightPosition[numLights]; // g_LightPosition.xyz is the position of the light (for point lights) // or the direction of the light (for directional lights). // g_LightPosition.w is the inverse radius (1/r) of the light (for attenuation)

      Parameters:
      shader - the Shader being used
      g - the Geometry being rendered
      lightList - the list of lights
      numLights - the number of lights to upload
      rm - to manage rendering
      startIndex - the starting index in the LightList
      lastTexUnit - the index of the most recently-used texture unit
      Returns:
      the next starting index in the LightList
    • render

      public void render(RenderManager renderManager, Shader shader, Geometry geometry, LightList lights, int lastTexUnit)
      Description copied from interface: TechniqueDefLogic
      Requests that the TechniqueDefLogic renders the given geometry. Fixed material functionality such as RenderState, material parameters, and uniform bindings have already been applied by the material, however, RenderState, uniforms, textures, can still be overridden.
      Specified by:
      render in interface TechniqueDefLogic
      Overrides:
      render in class DefaultTechniqueDefLogic
      Parameters:
      renderManager - The render manager to perform the rendering against.
      shader - The shader that was selected by this logic in TechniqueDefLogic.makeCurrent(com.jme3.asset.AssetManager, com.jme3.renderer.RenderManager, java.util.EnumSet, com.jme3.light.LightList, com.jme3.shader.DefineList).
      geometry - The geometry to render
      lights - Lights which influence the geometry.
      lastTexUnit - the index of the most recently used texture unit
    • extractIndirectLights

      protected void extractIndirectLights(LightList lightList, boolean removeLights)