com.io7m.r2.core.shaders.provided

## Class R2LightShaderSphericalLambertPhongSingle

- java.lang.Object
- - com.io7m.r2.core.shaders.provided.R2AbstractShader<R2LightSphericalSingleReadableType>
  - - com.io7m.r2.core.shaders.provided.R2LightShaderSphericalLambertPhongSingle

- All Implemented Interfaces:
    com.io7m.jcanephora.core.JCGLResourceUsableType, R2DeletableType, R2ShaderLightSingleUsableType<R2LightSphericalSingleReadableType>, R2ShaderLightVolumeSingleType<R2LightSphericalSingleReadableType>, R2ShaderLightVolumeSingleUsableType<R2LightSphericalSingleReadableType>, R2ShaderType<R2LightSphericalSingleReadableType>, R2ShaderUsableType<R2LightSphericalSingleReadableType>

      public final class R2LightShaderSphericalLambertPhongSingle
      extends R2AbstractShader<R2LightSphericalSingleReadableType>
      implements R2ShaderLightVolumeSingleType<R2LightSphericalSingleReadableType>

  Spherical light shader for single lights.

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static R2ShaderLightVolumeSingleType<R2LightSphericalSingleReadableType>` | `newShader(com.io7m.jcanephora.core.api.JCGLShadersType in_shaders, R2ShaderPreprocessingEnvironmentReadableType in_shader_env, R2IDPoolType in_pool)` Construct a new shader.
    `void` | `onReceiveBoundGeometryBufferTextures(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g, R2GeometryBufferUsableType gbuffer, com.io7m.jcanephora.core.JCGLTextureUnitType unit_albedo, com.io7m.jcanephora.core.JCGLTextureUnitType unit_specular, com.io7m.jcanephora.core.JCGLTextureUnitType unit_depth, com.io7m.jcanephora.core.JCGLTextureUnitType unit_normals)` Set the bound geometry buffer textures for the current shader.
    `void` | `onReceiveValues(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g, R2ShaderParametersLightType<R2LightSphericalSingleReadableType> light_parameters)` Set light values.
    `void` | `onReceiveVolumeLightTransform(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g, R2MatricesVolumeLightValuesType m)` Set shader values that are derived from the current volume light transform.
    `void` | `onValidate()` Validate the shader prior to executing a draw call.
    `Class<R2LightSphericalSingleReadableType>` | `shaderParametersType()`

    - ### Methods inherited from class com.io7m.r2.core.shaders.provided.R2AbstractShader

      `delete, isDeleted, onActivate, onDeactivate, shaderID, shaderProgram`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.io7m.r2.core.R2DeletableType

      `delete`

    - ### Methods inherited from interface com.io7m.r2.core.shaders.types.R2ShaderUsableType

      `onActivate, onDeactivate, shaderID, shaderProgram`

    - ### Methods inherited from interface com.io7m.jcanephora.core.JCGLResourceUsableType

      `isDeleted`

- - ### Method Detail

    - #### newShader

          public static R2ShaderLightVolumeSingleType<R2LightSphericalSingleReadableType> newShader(com.io7m.jcanephora.core.api.JCGLShadersType in_shaders,
                                                                                                    R2ShaderPreprocessingEnvironmentReadableType in_shader_env,
                                                                                                    R2IDPoolType in_pool)

      Construct a new shader.
      Parameters:
        `in_shaders` - A shader interface
        `in_shader_env` - A shader preprocessing environment
        `in_pool` - The ID pool
      Returns:
        A new shader

    - #### shaderParametersType

          public Class<R2LightSphericalSingleReadableType> shaderParametersType()

      Specified by:
        `shaderParametersType` in interface `R2ShaderUsableType<R2LightSphericalSingleReadableType>`
      Returns:
        The shader parameter type

    - #### onValidate

          public void onValidate()
                          throws R2ExceptionShaderValidationFailed

      Description copied from interface: `R2ShaderUsableType`
      Validate the shader prior to executing a draw call. This method exists so that shader implementations can check that the caller has called all required methods before drawing.
      Specified by:
        `onValidate` in interface `R2ShaderUsableType<R2LightSphericalSingleReadableType>`
      Throws:
        `R2ExceptionShaderValidationFailed` - If validation fails

    - #### onReceiveBoundGeometryBufferTextures

          public void onReceiveBoundGeometryBufferTextures(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g,
                                                           R2GeometryBufferUsableType gbuffer,
                                                           com.io7m.jcanephora.core.JCGLTextureUnitType unit_albedo,
                                                           com.io7m.jcanephora.core.JCGLTextureUnitType unit_specular,
                                                           com.io7m.jcanephora.core.JCGLTextureUnitType unit_depth,
                                                           com.io7m.jcanephora.core.JCGLTextureUnitType unit_normals)

      Description copied from interface: `R2ShaderLightSingleUsableType`

      Set the bound geometry buffer textures for the current shader.

      This method will be called exactly once between calls to `R2ShaderUsableType.onActivate(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type)` and `R2ShaderUsableType.onValidate()`.

      Specified by:
        `onReceiveBoundGeometryBufferTextures` in interface `R2ShaderLightSingleUsableType<R2LightSphericalSingleReadableType>`
      Parameters:
        `g` - An OpenGL interface
        `gbuffer` - The geometry buffer
        `unit_albedo` - The texture unit to which the geometry buffer's albedo/emissive texture is bound
        `unit_specular` - The texture unit to which the geometry buffer's specular texture is bound
        `unit_depth` - The texture unit to which the geometry buffer's depth/stencil texture is bound
        `unit_normals` - The texture unit to which the geometry buffer's normal

    - #### onReceiveValues

          public void onReceiveValues(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g,
                                      R2ShaderParametersLightType<R2LightSphericalSingleReadableType> light_parameters)

      Description copied from interface: `R2ShaderLightSingleUsableType`

      Set light values.

      This method will be called once for each light that uses the current shader.

      This method will be called after a call to `R2ShaderUsableType.onActivate(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type)` and before a call to `R2ShaderUsableType.onValidate()`.

      Specified by:
        `onReceiveValues` in interface `R2ShaderLightSingleUsableType<R2LightSphericalSingleReadableType>`
      Parameters:
        `g` - An OpenGL interface
        `light_parameters` - The light parameters

    - #### onReceiveVolumeLightTransform

          public void onReceiveVolumeLightTransform(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g,
                                                    R2MatricesVolumeLightValuesType m)

      Description copied from interface: `R2ShaderLightVolumeSingleUsableType`

      Set shader values that are derived from the current volume light transform.

      This method will be called exactly once for each light that uses the shader.

      This method will be called after a call to `R2ShaderUsableType.onActivate(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type)` and before a call to `R2ShaderUsableType.onValidate()`.

      Specified by:
        `onReceiveVolumeLightTransform` in interface `R2ShaderLightVolumeSingleUsableType<R2LightSphericalSingleReadableType>`
      Parameters:
        `g` - An OpenGL interface
        `m` - The instance matrices

Copyright © 2016 <code@io7m.com> http://io7m.com