danini-the-panini/mittsu-opengl

View on GitHub
lib/mittsu/opengl/shader/uniforms_lib.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
require 'mittsu/math'

module Mittsu
  class OpenGL::Shader
    UniformsLib = {
      common: {
        'diffuse' => Uniform.new(:color, Color.new(0xeeeeee)),
        'opacity' => Uniform.new(:float, 1.0),

        'map' => Uniform.new(:texture, nil),
        'offsetRepeat' => Uniform.new(:vec4, Vector4.new(0.0, 0.0, 1.0, 1.0)),

        'lightMap' => Uniform.new(:texture, nil),
        'specularMap' => Uniform.new(:texture, nil),
        'alphaMap' => Uniform.new(:texture, nil),

        'envMap' => Uniform.new(:texture, nil),
        'flipEnvMap' => Uniform.new(:float, -1.0),
        'reflectivity' => Uniform.new(:float, 1.0),
        'refractionRatio' => Uniform.new(:float, 0.98),

        'morphTargetInfluences' => Uniform.new(:float, 0.0)
      },

      bump: {
        'bumpMap' => Uniform.new(:texture, nil),
        'bumpScale' => Uniform.new(:float, 1.0)
      },

         normal_map: {
        'normalMap' => Uniform.new(:texture, nil),
        'normalScale' => Uniform.new(:vec2, Vector2.new(1.0, 1.0))
         },

      fog: {
        'fogDensity' => Uniform.new(:float, 0.00025),
        'fogNear' => Uniform.new(:float, 1.0),
        'fogFar' => Uniform.new(:float, 2000.0),
        'fogColor' => Uniform.new(:color, Color.new(0xffffff))
      },

      lights: {
        'ambientLightColor' => Uniform.new(:color, Color.new(0xffffff)),

        'directionalLightDirection' => Uniform.new(:'vec3[]', []),
        'directionalLightColor' => Uniform.new(:'color[]', []),

        'hemisphereLightDirection' => Uniform.new(:'vec3[]', []),
        'hemisphereLightSkyColor' => Uniform.new(:'color[]', []),
        'hemisphereLightGroundColor' => Uniform.new(:'color[]', []),

        'pointLightColor' => Uniform.new(:'color[]', []),
        'pointLightPosition' => Uniform.new(:'vec3[]', []),
        'pointLightDistance' => Uniform.new(:'float[]', []),
        'pointLightDecay' => Uniform.new(:'float[]', []),

        'spotLightColor' => Uniform.new(:'color[]', []),
        'spotLightPosition' => Uniform.new(:'vec3[]', []),
        'spotLightDirection' => Uniform.new(:'vec3[]', []),
        'spotLightDistance' => Uniform.new(:'float[]', []),
        'spotLightAngleCos' => Uniform.new(:'float[]', []),
        'spotLightExponent' => Uniform.new(:'float[]', []),
        'spotLightDecay' => Uniform.new(:'float[]', [])
      },

      particle: {
        'psColor' => Uniform.new(:color, Color.new(0xeeeeee)),
        'opacity' => Uniform.new(:float, 1.0),
        'size' => Uniform.new(:float, 1.0),
        'scale' => Uniform.new(:float, 1.0),
        'map' => Uniform.new(:texture, nil),
        'offsetRepeat' => Uniform.new(:vec4, Vector4.new(0.0, 0.0, 1.0, 1.0))
      },

      shadow_map: {
        'shadowMap' => Uniform.new(:'texture[]', []),
        'shadowMapSize' => Uniform.new(:'vec2[]', []),

        'shadowBias' => Uniform.new(:'float[]', []),
        'shadowDarkness' => Uniform.new(:'float[]', []),

        'shadowMatrix' => Uniform.new(:'mat4[]', [])
      }
    }
  end
end