Package com.jme3.material.logic
Class SinglePassAndImageBasedLightingLogic
java.lang.Object
com.jme3.material.logic.DefaultTechniqueDefLogic
com.jme3.material.logic.SinglePassAndImageBasedLightingLogic
- All Implemented Interfaces:
TechniqueDefLogic
-
Field Summary
Fields inherited from class com.jme3.material.logic.DefaultTechniqueDefLogic
techniqueDef
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
extractIndirectLights
(LightList lightList, boolean removeLights) makeCurrent
(AssetManager assetManager, RenderManager renderManager, EnumSet<Caps> rendererCaps, LightList lights, DefineList defines) Determine the shader to use for the given geometry / material combination.void
render
(RenderManager renderManager, Shader shader, Geometry geometry, LightList lights, int lastTexUnit) Requests that theTechniqueDefLogic
renders the given geometry.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.Methods inherited from class com.jme3.material.logic.DefaultTechniqueDefLogic
getAmbientColor, renderMeshFromGeometry
-
Constructor Details
-
SinglePassAndImageBasedLightingLogic
-
-
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 interfaceTechniqueDefLogic
- Overrides:
makeCurrent
in classDefaultTechniqueDefLogic
- 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, anyunmapped 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 usedg
- the Geometry being renderedlightList
- the list of lightsnumLights
- the number of lights to uploadrm
- to manage renderingstartIndex
- the starting index in the LightListlastTexUnit
- 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 theTechniqueDefLogic
renders the given geometry. Fixed material functionality such asRenderState
,material parameters
, anduniform bindings
have already been applied by the material, however,RenderState
,uniforms
,textures
, can still be overridden.- Specified by:
render
in interfaceTechniqueDefLogic
- Overrides:
render
in classDefaultTechniqueDefLogic
- Parameters:
renderManager
- The render manager to perform the rendering against.shader
- The shader that was selected by this logic inTechniqueDefLogic.makeCurrent(com.jme3.asset.AssetManager, com.jme3.renderer.RenderManager, java.util.EnumSet, com.jme3.light.LightList, com.jme3.shader.DefineList)
.geometry
- The geometry to renderlights
- Lights which influence the geometry.lastTexUnit
- the index of the most recently used texture unit
-
extractIndirectLights
-