Author Topic: Licht + Shader  (Read 3660 times)

Offline Dumblecore

  • byte
  • *
  • Posts: 7
    • View Profile
Licht + Shader
« on: September 25, 2013, 01:16:18 pm »
Hallo,
ich versuche gerade einen Tag/Nacht-Zyklus zu erstellen. Es klappt soweit auch alles wunder bar, bis auf eine Sache:
Mein Terrain bleibt immer gleich hell. Egal, ob ich das Ambient-Light verändere, oder das Terrain durch eine Lichtquelle beleuchte. Es bleibt immer genau gleich. Meine Idee war, dass das irgendwie mit dem Splat-Map-Shader zusammenhängt, den ich verwende... Aber wie kann ich das dann beheben.

hier noch meine Methode zur Erstellung des Terrains:
Code: [Select]
private void loadTerrain() throws Exception{
TextureInfo ti = new TextureInfo(TextureManager.getInstance().getTextureID("grass"));
ti.add(TextureManager.getInstance().getTextureID("sand"), TextureInfo.MODE_MODULATE);
ti.add(TextureManager.getInstance().getTextureID("stone"), TextureInfo.MODE_MODULATE);
ti.add(TextureManager.getInstance().getTextureID("alpha"), TextureInfo.MODE_MODULATE);

ground = Loader.load3DS(new FileInputStream("data/world/Terrain.3ds"), 20f)[0];
ground.setTexture(ti);
ground.rotateX(-(float)Math.PI/2f);
ground.setSpecularLighting(true);
Game.world.addObject(ground);
ground.build();
ground.compileAndStrip();
ground.setCollisionMode(Object3D.COLLISION_CHECK_OTHERS);

String fragSource = Loader.loadTextFile("data/misc/fragmentshader.glsl");
String vertexSource = Loader.loadTextFile("data/misc/vertexshader.glsl");
GLSLShader shader = new GLSLShader(vertexSource, fragSource);
shader.setStaticUniform("Grass", 0);
shader.setStaticUniform("Sand", 1);
shader.setStaticUniform("Stone", 2);
shader.setStaticUniform("Alpha", 3);
ground.setRenderHook(shader);
}
« Last Edit: September 26, 2013, 08:03:51 pm by Dumblecore »

Offline EgonOlsen

  • Administrator
  • quad
  • *****
  • Posts: 12295
    • View Profile
    • http://www.jpct.net
Re: Licht + Shader
« Reply #1 on: September 26, 2013, 12:13:04 pm »
Wenn dein Shader keinen Code enthält, um irgendwas mit Lichtquellen zu machen, dann wird da auch nichts passieren...
Du müsstest irgendeine Art von Lichtberechnung im Shader ergänzen. Du hast dazu die normalen, von OpenGL vordefinierten Attribute für Lichtquellen zur Verfügung.

Offline Dumblecore

  • byte
  • *
  • Posts: 7
    • View Profile
Re: Licht + Shader
« Reply #2 on: September 26, 2013, 08:03:40 pm »
Super danke :) hab jetzt noch etwas rumprobiert und jetzt funktionierts