示例#1
0
      @Override
      public void set(
          BaseShader shader, int inputID, Renderable renderable, Attributes combinedAttributes) {
        if (renderable.environment == null)
          shader.program.setUniform3fv(shader.loc(inputID), ones, 0, ones.length);
        else {
          renderable.worldTransform.getTranslation(tmpV1);
          if (combinedAttributes.has(ColorAttribute.AmbientLight))
            cacheAmbientCubemap.set(
                ((ColorAttribute) combinedAttributes.get(ColorAttribute.AmbientLight)).color);

          if (combinedAttributes.has(DirectionalLightsAttribute.Type)) {
            Array<DirectionalLight> lights =
                ((DirectionalLightsAttribute)
                        combinedAttributes.get(DirectionalLightsAttribute.Type))
                    .lights;
            for (int i = dirLightsOffset; i < lights.size; i++)
              cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).direction);
          }

          if (combinedAttributes.has(PointLightsAttribute.Type)) {
            Array<PointLight> lights =
                ((PointLightsAttribute) combinedAttributes.get(PointLightsAttribute.Type)).lights;
            for (int i = pointLightsOffset; i < lights.size; i++)
              cacheAmbientCubemap.add(
                  lights.get(i).color, lights.get(i).position, tmpV1, lights.get(i).intensity);
          }

          cacheAmbientCubemap.clamp();
          shader.program.setUniform3fv(
              shader.loc(inputID), cacheAmbientCubemap.data, 0, cacheAmbientCubemap.data.length);
        }
      }
示例#2
0
 @Override
 public void render(Renderable renderable, Attributes combinedAttributes) {
   if (!combinedAttributes.has(BlendingAttribute.Type))
     context.setBlending(false, GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
   bindMaterial(combinedAttributes);
   if (lighting) bindLights(renderable, combinedAttributes);
   super.render(renderable, combinedAttributes);
 }
示例#3
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   shader.set(inputID, temp.set(shader.camera.combined).mul(renderable.worldTransform));
 }
示例#4
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   shader.set(inputID, tmpM.set(renderable.worldTransform).inv().transpose());
 }
示例#5
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   shader.set(inputID, renderable.worldTransform);
 }
示例#6
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   shader.set(inputID, shader.camera.up);
 }
示例#7
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   shader.set(
       inputID, ((ColorAttribute) (combinedAttributes.get(ColorAttribute.Diffuse))).color);
 }
示例#8
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   final TextureAttribute ta =
       (TextureAttribute) (combinedAttributes.get(TextureAttribute.Ambient));
   shader.set(inputID, ta.offsetU, ta.offsetV, ta.scaleU, ta.scaleV);
 }
示例#9
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   shader.set(
       inputID,
       ((FloatAttribute) (combinedAttributes.get(FloatAttribute.Shininess))).value);
 }
示例#10
0
  @Override
  public void begin(final Camera camera, final RenderContext context) {
    super.begin(camera, context);

    for (final DirectionalLight dirLight : directionalLights) dirLight.set(0, 0, 0, 0, -1, 0);
    for (final PointLight pointLight : pointLights) pointLight.set(0, 0, 0, 0, 0, 0, 0);
    for (final SpotLight spotLight : spotLights) spotLight.set(0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0);
    lightsSet = false;

    if (has(u_time)) set(u_time, time += Gdx.graphics.getDeltaTime());
  }
示例#11
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   final int unit =
       shader.context.textureBinder.bind(
           ((TextureAttribute) (combinedAttributes.get(TextureAttribute.Ambient)))
               .textureDescription);
   shader.set(inputID, unit);
 }
示例#12
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   shader.set(
       inputID,
       shader.camera.position.x,
       shader.camera.position.y,
       shader.camera.position.z,
       1.1881f / (shader.camera.far * shader.camera.far));
 }
示例#13
0
 @Override
 public void set(
     BaseShader shader,
     int inputID,
     Renderable renderable,
     Attributes combinedAttributes) {
   if (combinedAttributes.has(CubemapAttribute.EnvironmentMap)) {
     shader.set(
         inputID,
         shader.context.textureBinder.bind(
             ((CubemapAttribute) combinedAttributes.get(CubemapAttribute.EnvironmentMap))
                 .textureDescription));
   }
 }
示例#14
0
 @Override
 public void set(
     BaseShader shader, int inputID, Renderable renderable, Attributes combinedAttributes) {
   for (int i = 0; i < bones.length; i++) {
     final int idx = i / 16;
     bones[i] =
         (renderable.bones == null
                 || idx >= renderable.bones.length
                 || renderable.bones[idx] == null)
             ? idtMatrix.val[i % 16]
             : renderable.bones[idx].val[i % 16];
   }
   shader.program.setUniformMatrix4fv(shader.loc(inputID), bones, 0, bones.length);
 }
示例#15
0
 @Override
 public void dispose() {
   program.dispose();
   super.dispose();
 }
示例#16
0
 @Override
 public void end() {
   super.end();
 }