com.io7m.r2.core.shaders.provided

## Class R2LightShaderProjectiveLambertBlinnPhongShadowVarianceSingle

- java.lang.Object
- - com.io7m.r2.core.shaders.provided.R2AbstractShader<R2LightProjectiveWithShadowVarianceType>
  - - com.io7m.r2.core.shaders.provided.R2LightShaderProjectiveLambertBlinnPhongShadowVarianceSingle

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

      public final class R2LightShaderProjectiveLambertBlinnPhongShadowVarianceSingle
      extends R2AbstractShader<R2LightProjectiveWithShadowVarianceType>
      implements R2ShaderLightProjectiveWithShadowType<R2LightProjectiveWithShadowVarianceType>

  Projective light shader for single lights.

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static R2ShaderLightProjectiveWithShadowType<R2LightProjectiveWithShadowVarianceType>` | `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` | `onReceiveProjectiveLight(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g, R2MatricesProjectiveLightValuesType m)` Set shader values that are derived from the current projective light.
    `void` | `onReceiveShadowMap(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g, com.io7m.jcanephora.texture_unit_allocator.JCGLTextureUnitContextMutableType tc, R2Texture2DUsableType map)` Set values from the given shadow map context.
    `void` | `onReceiveValues(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g, R2ShaderParametersLightType<R2LightProjectiveWithShadowVarianceType> 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<R2LightProjectiveWithShadowVarianceType>` | `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.shaders.types.R2ShaderUsableType

      `onActivate, onDeactivate, shaderID, shaderProgram`

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

      `isDeleted`

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

      `delete`

- - ### Method Detail

    - #### newShader

          public static R2ShaderLightProjectiveWithShadowType<R2LightProjectiveWithShadowVarianceType> 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` - The shader preprocessing environment
        `in_pool` - The ID pool
      Returns:
        A new shader

    - #### shaderParametersType

          public Class<R2LightProjectiveWithShadowVarianceType> shaderParametersType()

      Specified by:
        `shaderParametersType` in interface `R2ShaderUsableType<R2LightProjectiveWithShadowVarianceType>`
      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<R2LightProjectiveWithShadowVarianceType>`
      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<R2LightProjectiveWithShadowVarianceType>`
      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

    - #### onReceiveProjectiveLight

          public void onReceiveProjectiveLight(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g,
                                               R2MatricesProjectiveLightValuesType m)

      Description copied from interface: `R2ShaderLightProjectiveUsableType`

      Set shader values that are derived from the current projective light.

      This method will be called once for each projective 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:
        `onReceiveProjectiveLight` in interface `R2ShaderLightProjectiveUsableType<R2LightProjectiveWithShadowVarianceType>`
      Parameters:
        `g` - An OpenGL interface
        `m` - The instance matrices

    - #### onReceiveValues

          public void onReceiveValues(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g,
                                      R2ShaderParametersLightType<R2LightProjectiveWithShadowVarianceType> 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<R2LightProjectiveWithShadowVarianceType>`
      Parameters:
        `g` - An OpenGL interface
        `light_parameters` - The light parameters

    - #### onReceiveShadowMap

          public void onReceiveShadowMap(com.io7m.jcanephora.core.api.JCGLInterfaceGL33Type g,
                                         com.io7m.jcanephora.texture_unit_allocator.JCGLTextureUnitContextMutableType tc,
                                         R2Texture2DUsableType map)

      Description copied from interface: `R2ShaderLightProjectiveWithShadowUsableType`

      Set values from the given shadow map context.

      This method will be called once for each projective 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:
        `onReceiveShadowMap` in interface `R2ShaderLightProjectiveWithShadowUsableType<R2LightProjectiveWithShadowVarianceType>`
      Parameters:
        `g` - An OpenGL interface
        `tc` - A texture unit context
        `map` - A rendered shadow map

    - #### 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<R2LightProjectiveWithShadowVarianceType>`
      Parameters:
        `g` - An OpenGL interface
        `m` - The instance matrices

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