Yes
|
@ -1,3 +1,2 @@
|
|||
/target/
|
||||
*.class
|
||||
*.class
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package io.github.hydos.ginger;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import io.github.hydos.ginger.engine.api.*;
|
||||
import io.github.hydos.ginger.engine.cameras.Camera;
|
||||
import io.github.hydos.ginger.engine.elements.GuiTexture;
|
||||
|
@ -9,16 +11,15 @@ import io.github.hydos.ginger.engine.font.*;
|
|||
import io.github.hydos.ginger.engine.io.Window;
|
||||
import io.github.hydos.ginger.engine.math.vectors.*;
|
||||
import io.github.hydos.ginger.engine.obj.ModelLoader;
|
||||
import io.github.hydos.ginger.engine.obj.normals.NormalMappedObjLoader;
|
||||
import io.github.hydos.ginger.engine.obj.shapes.StaticCube;
|
||||
import io.github.hydos.ginger.engine.particle.*;
|
||||
import io.github.hydos.ginger.engine.render.MasterRenderer;
|
||||
import io.github.hydos.ginger.engine.render.models.TexturedModel;
|
||||
import io.github.hydos.ginger.engine.render.texture.ModelTexture;
|
||||
import io.github.hydos.ginger.engine.terrain.*;
|
||||
import io.github.hydos.ginger.engine.utils.Loader;
|
||||
import io.github.hydos.ginger.main.GingerMain;
|
||||
import io.github.hydos.ginger.main.settings.Constants;
|
||||
import io.github.hydos.litecraft.Block;
|
||||
|
||||
public class Example extends Game{
|
||||
|
||||
|
@ -37,9 +38,15 @@ public class Example extends Game{
|
|||
|
||||
Window.setBackgroundColour(0.2f, 0.2f, 0.8f);
|
||||
|
||||
StaticCube.scaleCube(6);
|
||||
//TODO: block register class to register blockzz
|
||||
//TODO: could also probally pull the mesh from 1 place to lower memory usage in the future
|
||||
TexturedModel dirtModel = ModelLoader.loadGenericCube("block/cubes/soil/dirt.png");
|
||||
dirtModel.getTexture().setReflectivity(10f);
|
||||
TexturedModel grassModel = ModelLoader.loadGenericCube("block/cubes/soil/dirt.png");
|
||||
|
||||
|
||||
|
||||
|
||||
StaticCube.scaleCube(6);
|
||||
Player player = new Player(dirtModel, new Vector3f(0,0,-3),0,180f,0, new Vector3f(0.2f, 0.2f, 0.2f));
|
||||
Camera camera = new Camera(new Vector3f(0,0.1f,0), player);
|
||||
ginger3D = new Ginger();
|
||||
|
@ -49,6 +56,37 @@ public class Example extends Game{
|
|||
ginger3D.setup(new MasterRenderer(data.camera), data);
|
||||
|
||||
|
||||
float blockSpacing = 1.2f;
|
||||
float blockLineSpacing = 1.2f;
|
||||
float blockUpwardsSpacing = 1.2f;
|
||||
|
||||
//TODO: rename entity class to object class because not just entities
|
||||
List<Block> chunk = new ArrayList<Block>();
|
||||
//Basic chunk generation
|
||||
TexturedModel activeModel = dirtModel;
|
||||
for(int k = 0; k<8;k++) {
|
||||
if(k == 8) {
|
||||
activeModel = grassModel;
|
||||
}
|
||||
for(int i = 0; i<8;i++) {
|
||||
for(int j = 0; j<8;j++) {
|
||||
chunk.add(new Block(activeModel, new Vector3f(blockLineSpacing*i, blockUpwardsSpacing*k, blockSpacing*j)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//add chunk to "entity" render list
|
||||
for(Block b: chunk) {
|
||||
data.entities.add(b);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//idk
|
||||
|
||||
|
||||
|
||||
FontType font = new FontType(Loader.loadFontAtlas("candara.png"), "candara.fnt");
|
||||
|
||||
GUIText text = new GUIText("LiteCraft", 3, font, new Vector2f(0,0), 1f, true);
|
||||
|
@ -84,7 +122,9 @@ public class Example extends Game{
|
|||
system.generateParticles(new Vector3f(0,-2,0));
|
||||
|
||||
if(isInWorld) {
|
||||
ginger3D.render(this);
|
||||
ginger3D.renderWithoutTerrain(this);
|
||||
// TODO: dynamic text
|
||||
// text.textString = "" + (data.entities.size() + data.flatTerrains.size());
|
||||
}
|
||||
ginger3D.renderOverlays(this);
|
||||
|
||||
|
|
|
@ -16,9 +16,9 @@ import io.github.hydos.ginger.engine.terrain.Terrain;
|
|||
public class GameData {
|
||||
|
||||
public List<GuiTexture> guis;
|
||||
public List<Entity> entities;
|
||||
public List<RenderObject> entities;
|
||||
public List<Light> lights;
|
||||
public List<Entity> normalMapEntities;
|
||||
public List<RenderObject> normalMapEntities;
|
||||
public List<Terrain> flatTerrains;
|
||||
public Player player;
|
||||
public Camera camera;
|
||||
|
@ -28,9 +28,9 @@ public class GameData {
|
|||
public GameData(Player player, Camera camera) {
|
||||
clippingPlane = new Vector4f(0, -1, 0, 100000);
|
||||
guis = new ArrayList<GuiTexture>();
|
||||
entities = new ArrayList<Entity>();
|
||||
entities = new ArrayList<RenderObject>();
|
||||
lights = new ArrayList<Light>();
|
||||
normalMapEntities = new ArrayList<Entity>();
|
||||
normalMapEntities = new ArrayList<RenderObject>();
|
||||
flatTerrains = new ArrayList<Terrain>();
|
||||
this.player = player;
|
||||
this.camera = camera;
|
||||
|
|
|
@ -36,9 +36,21 @@ public class Ginger {
|
|||
|
||||
public void render(Game game) {
|
||||
GingerMain.preRenderScene(masterRenderer);
|
||||
ParticleMaster.renderParticles(game.data.camera);
|
||||
contrastFbo.bindFBO();
|
||||
masterRenderer.renderScene(game.data.entities, game.data.normalMapEntities, game.data.flatTerrains, game.data.lights, game.data.camera, game.data.clippingPlane);
|
||||
ParticleMaster.renderParticles(game.data.camera);
|
||||
contrastFbo.unbindFBO();
|
||||
PostProcessing.doPostProcessing(contrastFbo.colorTexture);
|
||||
if(game.data.handleGuis) {
|
||||
renderOverlays(game);
|
||||
}
|
||||
}
|
||||
|
||||
public void renderWithoutTerrain(Game game) {
|
||||
GingerMain.preRenderScene(masterRenderer);
|
||||
contrastFbo.bindFBO();
|
||||
masterRenderer.renderSceneNoTerrain(game.data.entities, game.data.normalMapEntities, game.data.lights, game.data.camera, game.data.clippingPlane);
|
||||
ParticleMaster.renderParticles(game.data.camera);
|
||||
contrastFbo.unbindFBO();
|
||||
PostProcessing.doPostProcessing(contrastFbo.colorTexture);
|
||||
if(game.data.handleGuis) {
|
||||
|
|
|
@ -8,7 +8,7 @@ import io.github.hydos.ginger.engine.render.models.TexturedModel;
|
|||
import io.github.hydos.ginger.engine.terrain.Terrain;
|
||||
import io.github.hydos.ginger.main.settings.Constants;
|
||||
|
||||
public class Player extends Entity{
|
||||
public class Player extends RenderObject{
|
||||
|
||||
private static float terrainHeight = 0;
|
||||
|
||||
|
|
|
@ -3,13 +3,13 @@ package io.github.hydos.ginger.engine.elements.objects;
|
|||
import io.github.hydos.ginger.engine.math.vectors.Vector3f;
|
||||
import io.github.hydos.ginger.engine.render.models.TexturedModel;
|
||||
|
||||
public class Entity {
|
||||
public class RenderObject {
|
||||
|
||||
private TexturedModel model;
|
||||
private Vector3f position;
|
||||
private float rotX = 0,rotY = 0,rotZ = 0;
|
||||
private Vector3f scale;
|
||||
public Entity(TexturedModel model, Vector3f position, float rotX, float rotY, float rotZ, Vector3f scale) {
|
||||
public RenderObject(TexturedModel model, Vector3f position, float rotX, float rotY, float rotZ, Vector3f scale) {
|
||||
this.model = model;
|
||||
this.position = position;
|
||||
this.rotX = rotX;
|
|
@ -72,6 +72,42 @@ public class GUIText {
|
|||
TextMaster.removeText(this);
|
||||
}
|
||||
|
||||
public void setTextString(String textString) {
|
||||
this.textString = textString;
|
||||
}
|
||||
|
||||
public void setFontSize(float fontSize) {
|
||||
this.fontSize = fontSize;
|
||||
}
|
||||
|
||||
public void setTextMeshVao(int textMeshVao) {
|
||||
this.textMeshVao = textMeshVao;
|
||||
}
|
||||
|
||||
public void setVertexCount(int vertexCount) {
|
||||
this.vertexCount = vertexCount;
|
||||
}
|
||||
|
||||
public void setColour(Vector3f colour) {
|
||||
this.colour = colour;
|
||||
}
|
||||
|
||||
public void setPosition(Vector2f position) {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public void setLineMaxSize(float lineMaxSize) {
|
||||
this.lineMaxSize = lineMaxSize;
|
||||
}
|
||||
|
||||
public void setFont(FontType font) {
|
||||
this.font = font;
|
||||
}
|
||||
|
||||
public void setCenterText(boolean centerText) {
|
||||
this.centerText = centerText;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The font used by this text.
|
||||
*/
|
||||
|
@ -185,6 +221,8 @@ public class GUIText {
|
|||
return textString;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Vector3f getOutlineColour() {
|
||||
return outlineColour;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import org.lwjgl.opengl.GL13;
|
|||
|
||||
import io.github.hydos.ginger.engine.cameras.Camera;
|
||||
import io.github.hydos.ginger.engine.elements.GuiTexture;
|
||||
import io.github.hydos.ginger.engine.elements.objects.Entity;
|
||||
import io.github.hydos.ginger.engine.elements.objects.RenderObject;
|
||||
import io.github.hydos.ginger.engine.elements.objects.Light;
|
||||
import io.github.hydos.ginger.engine.io.Window;
|
||||
import io.github.hydos.ginger.engine.math.matrixes.Matrix4f;
|
||||
|
@ -46,8 +46,8 @@ public class MasterRenderer {
|
|||
|
||||
private ShadowMapMasterRenderer shadowMapRenderer;
|
||||
|
||||
private Map<TexturedModel, List<Entity>> entities = new HashMap<TexturedModel, List<Entity>>();
|
||||
private Map<TexturedModel, List<Entity>> normalMapEntities = new HashMap<TexturedModel, List<Entity>>();
|
||||
private Map<TexturedModel, List<RenderObject>> entities = new HashMap<TexturedModel, List<RenderObject>>();
|
||||
private Map<TexturedModel, List<RenderObject>> normalMapEntities = new HashMap<TexturedModel, List<RenderObject>>();
|
||||
|
||||
public static final float FOV = 80f;
|
||||
public static final float NEAR_PLANE = 0.1f;
|
||||
|
@ -86,7 +86,7 @@ public class MasterRenderer {
|
|||
GL11.glBindTexture(GL11.GL_TEXTURE_2D, shadowMapRenderer.getShadowMap());
|
||||
}
|
||||
|
||||
public void renderScene(List<Entity> entities, List<Entity> normalEntities, List<Terrain> terrains, List<Light> lights, Camera camera, Vector4f clipPlane) {
|
||||
public void renderScene(List<RenderObject> entities, List<RenderObject> normalEntities, List<Terrain> terrains, List<Light> lights, Camera camera, Vector4f clipPlane) {
|
||||
prepare();
|
||||
renderEntities(entities, camera, lights);
|
||||
renderNormalEntities(normalEntities, lights, camera, clipPlane);
|
||||
|
@ -96,8 +96,8 @@ public class MasterRenderer {
|
|||
|
||||
}
|
||||
|
||||
private void renderNormalEntities(List<Entity> normalEntities, List<Light> lights, Camera camera, Vector4f clipPlane) {
|
||||
for(Entity entity: normalEntities) {
|
||||
private void renderNormalEntities(List<RenderObject> normalEntities, List<Light> lights, Camera camera, Vector4f clipPlane) {
|
||||
for(RenderObject entity: normalEntities) {
|
||||
processEntityWithNormal(entity);
|
||||
}
|
||||
normalRenderer.render(normalMapEntities, clipPlane, lights, camera);
|
||||
|
@ -116,8 +116,8 @@ public class MasterRenderer {
|
|||
terrainShader.stop();
|
||||
}
|
||||
|
||||
private void renderEntities(List<Entity> entities, Camera camera, List<Light> lights) {
|
||||
for(Entity entity: entities) {
|
||||
private void renderEntities(List<RenderObject> entities, Camera camera, List<Light> lights) {
|
||||
for(RenderObject entity: entities) {
|
||||
processEntity(entity);
|
||||
}
|
||||
entityRenderer.prepare();
|
||||
|
@ -130,32 +130,32 @@ public class MasterRenderer {
|
|||
this.entities.clear();
|
||||
}
|
||||
|
||||
private void processEntity(Entity entity) {
|
||||
private void processEntity(RenderObject entity) {
|
||||
TexturedModel entityModel = entity.getModel();
|
||||
List<Entity> batch = entities.get(entityModel);
|
||||
List<RenderObject> batch = entities.get(entityModel);
|
||||
if(batch!=null) {
|
||||
batch.add(entity);
|
||||
}else {
|
||||
List<Entity> newBatch = new ArrayList<Entity>();
|
||||
List<RenderObject> newBatch = new ArrayList<RenderObject>();
|
||||
newBatch.add(entity);
|
||||
entities.put(entityModel, newBatch);
|
||||
}
|
||||
}
|
||||
|
||||
private void processEntityWithNormal(Entity entity) {
|
||||
private void processEntityWithNormal(RenderObject entity) {
|
||||
TexturedModel entityModel = entity.getModel();
|
||||
List<Entity> batch = normalMapEntities.get(entityModel);
|
||||
List<RenderObject> batch = normalMapEntities.get(entityModel);
|
||||
if(batch!=null) {
|
||||
batch.add(entity);
|
||||
}else {
|
||||
List<Entity> newBatch = new ArrayList<Entity>();
|
||||
List<RenderObject> newBatch = new ArrayList<RenderObject>();
|
||||
newBatch.add(entity);
|
||||
normalMapEntities.put(entityModel, newBatch);
|
||||
}
|
||||
}
|
||||
|
||||
public void renderShadowMap(List<Entity> entityList, Light sun) {
|
||||
for(Entity entity : entityList) {
|
||||
public void renderShadowMap(List<RenderObject> entityList, Light sun) {
|
||||
for(RenderObject entity : entityList) {
|
||||
processEntity(entity);
|
||||
}
|
||||
shadowMapRenderer.render(entities, sun);
|
||||
|
@ -199,4 +199,14 @@ public class MasterRenderer {
|
|||
texture.add(guiTexture);
|
||||
guiRenderer.render(texture);
|
||||
}
|
||||
|
||||
public void renderSceneNoTerrain(List<RenderObject> entities, List<RenderObject> normalEntities, List<Light> lights, Camera camera, Vector4f clipPlane) {
|
||||
|
||||
prepare();
|
||||
renderEntities(entities, camera, lights);
|
||||
renderNormalEntities(normalEntities, lights, camera, clipPlane);
|
||||
|
||||
skyboxRenderer.render(camera);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import org.lwjgl.opengl.GL13;
|
|||
import org.lwjgl.opengl.GL20;
|
||||
import org.lwjgl.opengl.GL30;
|
||||
|
||||
import io.github.hydos.ginger.engine.elements.objects.Entity;
|
||||
import io.github.hydos.ginger.engine.elements.objects.RenderObject;
|
||||
import io.github.hydos.ginger.engine.math.Maths;
|
||||
import io.github.hydos.ginger.engine.math.matrixes.Matrix4f;
|
||||
import io.github.hydos.ginger.engine.render.MasterRenderer;
|
||||
|
@ -28,11 +28,11 @@ public class EntityRenderer {
|
|||
shader.stop();
|
||||
}
|
||||
|
||||
public void render(Map<TexturedModel,List<Entity>> entities) {
|
||||
public void render(Map<TexturedModel,List<RenderObject>> entities) {
|
||||
for(TexturedModel model: entities.keySet()) {
|
||||
prepareTexturedModel(model);
|
||||
List<Entity> batch = entities.get(model);
|
||||
for(Entity entity:batch) {
|
||||
List<RenderObject> batch = entities.get(model);
|
||||
for(RenderObject entity:batch) {
|
||||
prepareInstance(entity);
|
||||
GL11.glDrawElements(GL11.GL_TRIANGLES, model.getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT, 0);
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ public class EntityRenderer {
|
|||
GL30.glBindVertexArray(0);
|
||||
}
|
||||
|
||||
private void prepareInstance(Entity entity) {
|
||||
private void prepareInstance(RenderObject entity) {
|
||||
Matrix4f transformationMatrix = Maths.createTransformationMatrix(entity.getPosition(), entity.getRotX(), entity.getRotY(), entity.getRotZ(), entity.getScale());
|
||||
shader.loadTransformationMatrix(transformationMatrix);
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import org.lwjgl.opengl.GL20;
|
|||
import org.lwjgl.opengl.GL30;
|
||||
|
||||
import io.github.hydos.ginger.engine.cameras.Camera;
|
||||
import io.github.hydos.ginger.engine.elements.objects.Entity;
|
||||
import io.github.hydos.ginger.engine.elements.objects.RenderObject;
|
||||
import io.github.hydos.ginger.engine.elements.objects.Light;
|
||||
import io.github.hydos.ginger.engine.io.Window;
|
||||
import io.github.hydos.ginger.engine.math.Maths;
|
||||
|
@ -33,13 +33,13 @@ public class NormalMappingRenderer {
|
|||
shader.stop();
|
||||
}
|
||||
|
||||
public void render(Map<TexturedModel, List<Entity>> entities, Vector4f clipPlane, List<Light> lights, Camera camera) {
|
||||
public void render(Map<TexturedModel, List<RenderObject>> entities, Vector4f clipPlane, List<Light> lights, Camera camera) {
|
||||
shader.start();
|
||||
prepare(clipPlane, lights, camera);
|
||||
for (TexturedModel model : entities.keySet()) {
|
||||
prepareTexturedModel(model);
|
||||
List<Entity> batch = entities.get(model);
|
||||
for (Entity entity : batch) {
|
||||
List<RenderObject> batch = entities.get(model);
|
||||
for (RenderObject entity : batch) {
|
||||
prepareInstance(entity);
|
||||
GL11.glDrawElements(GL11.GL_TRIANGLES, model.getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT, 0);
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ public class NormalMappingRenderer {
|
|||
GL30.glBindVertexArray(0);
|
||||
}
|
||||
|
||||
private void prepareInstance(Entity entity) {
|
||||
private void prepareInstance(RenderObject entity) {
|
||||
Matrix4f transformationMatrix = Maths.createTransformationMatrix(entity.getPosition(), entity.getRotX(),
|
||||
entity.getRotY(), entity.getRotZ(), entity.getScale());
|
||||
shader.loadTransformationMatrix(transformationMatrix);
|
||||
|
|
|
@ -8,7 +8,7 @@ import org.lwjgl.opengl.GL13;
|
|||
import org.lwjgl.opengl.GL20;
|
||||
import org.lwjgl.opengl.GL30;
|
||||
|
||||
import io.github.hydos.ginger.engine.elements.objects.Entity;
|
||||
import io.github.hydos.ginger.engine.elements.objects.RenderObject;
|
||||
import io.github.hydos.ginger.engine.math.Maths;
|
||||
import io.github.hydos.ginger.engine.math.matrixes.Matrix4f;
|
||||
import io.github.hydos.ginger.engine.render.MasterRenderer;
|
||||
|
@ -40,7 +40,7 @@ public class ShadowMapEntityRenderer {
|
|||
* @param entities
|
||||
* - the entities to be rendered to the shadow map.
|
||||
*/
|
||||
protected void render(Map<TexturedModel, List<Entity>> entities) {
|
||||
protected void render(Map<TexturedModel, List<RenderObject>> entities) {
|
||||
for (TexturedModel model : entities.keySet()) {
|
||||
RawModel rawModel = model.getRawModel();
|
||||
bindModel(rawModel);
|
||||
|
@ -49,7 +49,7 @@ public class ShadowMapEntityRenderer {
|
|||
if(model.getTexture().isTransparent()) {
|
||||
MasterRenderer.disableCulling();
|
||||
}
|
||||
for (Entity entity : entities.get(model)) {
|
||||
for (RenderObject entity : entities.get(model)) {
|
||||
prepareInstance(entity);
|
||||
GL11.glDrawElements(GL11.GL_TRIANGLES, rawModel.getVertexCount(),
|
||||
GL11.GL_UNSIGNED_INT, 0);
|
||||
|
@ -86,7 +86,7 @@ public class ShadowMapEntityRenderer {
|
|||
* @param entity
|
||||
* - the entity to be prepared for rendering.
|
||||
*/
|
||||
private void prepareInstance(Entity entity) {
|
||||
private void prepareInstance(RenderObject entity) {
|
||||
Matrix4f modelMatrix = Maths.createTransformationMatrix(entity.getPosition(),
|
||||
entity.getRotX(), entity.getRotY(), entity.getRotZ(), entity.getScale());
|
||||
Matrix4f mvpMatrix = Matrix4f.mul(projectionViewMatrix, modelMatrix, null);
|
||||
|
|
|
@ -6,7 +6,7 @@ import java.util.Map;
|
|||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import io.github.hydos.ginger.engine.cameras.Camera;
|
||||
import io.github.hydos.ginger.engine.elements.objects.Entity;
|
||||
import io.github.hydos.ginger.engine.elements.objects.RenderObject;
|
||||
import io.github.hydos.ginger.engine.elements.objects.Light;
|
||||
import io.github.hydos.ginger.engine.math.matrixes.Matrix4f;
|
||||
import io.github.hydos.ginger.engine.math.vectors.Vector2f;
|
||||
|
@ -66,7 +66,7 @@ public class ShadowMapMasterRenderer {
|
|||
* @param sun
|
||||
* - the light acting as the sun in the scene.
|
||||
*/
|
||||
public void render(Map<TexturedModel, List<Entity>> entities, Light sun) {
|
||||
public void render(Map<TexturedModel, List<RenderObject>> entities, Light sun) {
|
||||
shadowBox.update();
|
||||
Vector3f sunPosition = sun.getPosition();
|
||||
Vector3f lightDirection = new Vector3f(-sunPosition.x, -sunPosition.y, -sunPosition.z);
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package io.github.hydos.litecraft;
|
||||
|
||||
import io.github.hydos.ginger.engine.elements.objects.RenderObject;
|
||||
import io.github.hydos.ginger.engine.math.vectors.Vector3f;
|
||||
import io.github.hydos.ginger.engine.render.models.TexturedModel;
|
||||
|
||||
public class Block extends RenderObject{
|
||||
|
||||
public Block(TexturedModel blockModel, Vector3f position) {
|
||||
super(blockModel, position, 0, 0, 0, new Vector3f(0.2f,0.2f,0.2f));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,100 +0,0 @@
|
|||
info face="Candara" size=63 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=8,8,8,8 spacing=0,0
|
||||
common lineHeight=94 base=53 scaleW=512 scaleH=512 pages=1 packed=0
|
||||
page id=0 file="candara.png"
|
||||
chars count=95
|
||||
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=53 xadvance=30 page=0 chnl=0
|
||||
char id=124 x=0 y=0 width=23 height=81 xoffset=-3 yoffset=-4 xadvance=32 page=0 chnl=0
|
||||
char id=93 x=23 y=0 width=32 height=80 xoffset=-4 yoffset=-2 xadvance=38 page=0 chnl=0
|
||||
char id=91 x=55 y=0 width=32 height=80 xoffset=-5 yoffset=-2 xadvance=38 page=0 chnl=0
|
||||
char id=125 x=87 y=0 width=38 height=79 xoffset=-7 yoffset=-2 xadvance=38 page=0 chnl=0
|
||||
char id=123 x=125 y=0 width=37 height=79 xoffset=-7 yoffset=-2 xadvance=38 page=0 chnl=0
|
||||
char id=41 x=162 y=0 width=35 height=79 xoffset=-5 yoffset=-2 xadvance=38 page=0 chnl=0
|
||||
char id=40 x=197 y=0 width=35 height=79 xoffset=-6 yoffset=-2 xadvance=38 page=0 chnl=0
|
||||
char id=64 x=232 y=0 width=74 height=78 xoffset=-4 yoffset=-1 xadvance=80 page=0 chnl=0
|
||||
char id=106 x=306 y=0 width=28 height=74 xoffset=-7 yoffset=2 xadvance=30 page=0 chnl=0
|
||||
char id=81 x=334 y=0 width=55 height=73 xoffset=-5 yoffset=3 xadvance=60 page=0 chnl=0
|
||||
char id=92 x=389 y=0 width=33 height=72 xoffset=-7 yoffset=-1 xadvance=33 page=0 chnl=0
|
||||
char id=47 x=422 y=0 width=34 height=72 xoffset=-8 yoffset=-1 xadvance=33 page=0 chnl=0
|
||||
char id=36 x=456 y=0 width=39 height=67 xoffset=-5 yoffset=3 xadvance=44 page=0 chnl=0
|
||||
char id=103 x=0 y=81 width=48 height=66 xoffset=-5 yoffset=11 xadvance=50 page=0 chnl=0
|
||||
char id=57 x=48 y=81 width=45 height=63 xoffset=-4 yoffset=11 xadvance=51 page=0 chnl=0
|
||||
char id=51 x=93 y=81 width=43 height=63 xoffset=-6 yoffset=11 xadvance=47 page=0 chnl=0
|
||||
char id=102 x=136 y=81 width=38 height=63 xoffset=-8 yoffset=-1 xadvance=37 page=0 chnl=0
|
||||
char id=100 x=174 y=81 width=45 height=63 xoffset=-5 yoffset=0 xadvance=51 page=0 chnl=0
|
||||
char id=53 x=219 y=81 width=41 height=62 xoffset=-4 yoffset=11 xadvance=47 page=0 chnl=0
|
||||
char id=113 x=260 y=81 width=46 height=62 xoffset=-5 yoffset=14 xadvance=51 page=0 chnl=0
|
||||
char id=112 x=306 y=81 width=47 height=62 xoffset=-5 yoffset=14 xadvance=51 page=0 chnl=0
|
||||
char id=108 x=353 y=81 width=24 height=62 xoffset=-4 yoffset=0 xadvance=30 page=0 chnl=0
|
||||
char id=98 x=377 y=81 width=46 height=62 xoffset=-4 yoffset=1 xadvance=51 page=0 chnl=0
|
||||
char id=55 x=423 y=81 width=43 height=61 xoffset=-6 yoffset=11 xadvance=46 page=0 chnl=0
|
||||
char id=52 x=0 y=147 width=47 height=61 xoffset=-6 yoffset=11 xadvance=50 page=0 chnl=0
|
||||
char id=121 x=47 y=147 width=44 height=61 xoffset=-7 yoffset=15 xadvance=45 page=0 chnl=0
|
||||
char id=107 x=91 y=147 width=44 height=61 xoffset=-4 yoffset=1 xadvance=47 page=0 chnl=0
|
||||
char id=104 x=135 y=147 width=44 height=61 xoffset=-4 yoffset=1 xadvance=50 page=0 chnl=0
|
||||
char id=38 x=179 y=147 width=56 height=60 xoffset=-5 yoffset=3 xadvance=59 page=0 chnl=0
|
||||
char id=56 x=235 y=147 width=45 height=60 xoffset=-4 yoffset=2 xadvance=51 page=0 chnl=0
|
||||
char id=105 x=280 y=147 width=26 height=60 xoffset=-5 yoffset=2 xadvance=30 page=0 chnl=0
|
||||
char id=83 x=306 y=147 width=44 height=60 xoffset=-5 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=79 x=350 y=147 width=55 height=60 xoffset=-5 yoffset=3 xadvance=60 page=0 chnl=0
|
||||
char id=71 x=405 y=147 width=50 height=60 xoffset=-5 yoffset=3 xadvance=55 page=0 chnl=0
|
||||
char id=67 x=455 y=147 width=47 height=60 xoffset=-5 yoffset=3 xadvance=51 page=0 chnl=0
|
||||
char id=59 x=0 y=208 width=28 height=59 xoffset=-6 yoffset=15 xadvance=32 page=0 chnl=0
|
||||
char id=63 x=28 y=208 width=36 height=59 xoffset=-6 yoffset=3 xadvance=38 page=0 chnl=0
|
||||
char id=85 x=64 y=208 width=52 height=59 xoffset=-4 yoffset=4 xadvance=59 page=0 chnl=0
|
||||
char id=74 x=116 y=208 width=38 height=59 xoffset=-7 yoffset=4 xadvance=42 page=0 chnl=0
|
||||
char id=127 x=154 y=208 width=47 height=58 xoffset=-8 yoffset=4 xadvance=45 page=0 chnl=0
|
||||
char id=35 x=201 y=208 width=48 height=58 xoffset=-7 yoffset=4 xadvance=48 page=0 chnl=0
|
||||
char id=33 x=249 y=208 width=25 height=58 xoffset=-4 yoffset=4 xadvance=32 page=0 chnl=0
|
||||
char id=54 x=274 y=208 width=45 height=58 xoffset=-4 yoffset=4 xadvance=51 page=0 chnl=0
|
||||
char id=90 x=319 y=208 width=44 height=58 xoffset=-5 yoffset=4 xadvance=49 page=0 chnl=0
|
||||
char id=89 x=363 y=208 width=51 height=58 xoffset=-7 yoffset=4 xadvance=51 page=0 chnl=0
|
||||
char id=88 x=414 y=208 width=52 height=58 xoffset=-8 yoffset=4 xadvance=51 page=0 chnl=0
|
||||
char id=87 x=0 y=267 width=73 height=58 xoffset=-8 yoffset=4 xadvance=72 page=0 chnl=0
|
||||
char id=86 x=73 y=267 width=52 height=58 xoffset=-8 yoffset=4 xadvance=51 page=0 chnl=0
|
||||
char id=84 x=125 y=267 width=48 height=58 xoffset=-7 yoffset=4 xadvance=48 page=0 chnl=0
|
||||
char id=82 x=173 y=267 width=48 height=58 xoffset=-3 yoffset=4 xadvance=54 page=0 chnl=0
|
||||
char id=80 x=221 y=267 width=46 height=58 xoffset=-3 yoffset=4 xadvance=51 page=0 chnl=0
|
||||
char id=78 x=267 y=267 width=48 height=58 xoffset=-3 yoffset=4 xadvance=58 page=0 chnl=0
|
||||
char id=77 x=315 y=267 width=62 height=58 xoffset=-4 yoffset=4 xadvance=70 page=0 chnl=0
|
||||
char id=76 x=377 y=267 width=42 height=58 xoffset=-3 yoffset=4 xadvance=47 page=0 chnl=0
|
||||
char id=75 x=419 y=267 width=48 height=58 xoffset=-3 yoffset=4 xadvance=53 page=0 chnl=0
|
||||
char id=73 x=467 y=267 width=24 height=58 xoffset=-3 yoffset=4 xadvance=33 page=0 chnl=0
|
||||
char id=72 x=0 y=325 width=48 height=58 xoffset=-3 yoffset=4 xadvance=57 page=0 chnl=0
|
||||
char id=70 x=48 y=325 width=42 height=58 xoffset=-3 yoffset=4 xadvance=47 page=0 chnl=0
|
||||
char id=69 x=90 y=325 width=43 height=58 xoffset=-3 yoffset=4 xadvance=49 page=0 chnl=0
|
||||
char id=68 x=133 y=325 width=50 height=58 xoffset=-3 yoffset=4 xadvance=56 page=0 chnl=0
|
||||
char id=66 x=183 y=325 width=47 height=58 xoffset=-3 yoffset=4 xadvance=53 page=0 chnl=0
|
||||
char id=65 x=230 y=325 width=56 height=58 xoffset=-8 yoffset=4 xadvance=55 page=0 chnl=0
|
||||
char id=37 x=286 y=325 width=47 height=57 xoffset=-6 yoffset=5 xadvance=48 page=0 chnl=0
|
||||
char id=116 x=333 y=325 width=37 height=56 xoffset=-7 yoffset=7 xadvance=39 page=0 chnl=0
|
||||
char id=48 x=370 y=325 width=45 height=51 xoffset=-4 yoffset=11 xadvance=51 page=0 chnl=0
|
||||
char id=50 x=415 y=325 width=40 height=51 xoffset=-5 yoffset=11 xadvance=45 page=0 chnl=0
|
||||
char id=49 x=455 y=325 width=32 height=51 xoffset=-6 yoffset=11 xadvance=38 page=0 chnl=0
|
||||
char id=115 x=0 y=383 width=40 height=49 xoffset=-6 yoffset=14 xadvance=42 page=0 chnl=0
|
||||
char id=111 x=40 y=383 width=47 height=49 xoffset=-5 yoffset=14 xadvance=51 page=0 chnl=0
|
||||
char id=101 x=87 y=383 width=44 height=49 xoffset=-5 yoffset=14 xadvance=48 page=0 chnl=0
|
||||
char id=99 x=131 y=383 width=40 height=49 xoffset=-5 yoffset=14 xadvance=44 page=0 chnl=0
|
||||
char id=97 x=171 y=383 width=42 height=49 xoffset=-5 yoffset=14 xadvance=47 page=0 chnl=0
|
||||
char id=117 x=213 y=383 width=44 height=48 xoffset=-4 yoffset=15 xadvance=50 page=0 chnl=0
|
||||
char id=114 x=257 y=383 width=36 height=48 xoffset=-5 yoffset=14 xadvance=38 page=0 chnl=0
|
||||
char id=110 x=293 y=383 width=45 height=48 xoffset=-5 yoffset=14 xadvance=50 page=0 chnl=0
|
||||
char id=109 x=338 y=383 width=63 height=48 xoffset=-6 yoffset=14 xadvance=68 page=0 chnl=0
|
||||
char id=58 x=401 y=383 width=25 height=47 xoffset=-4 yoffset=15 xadvance=32 page=0 chnl=0
|
||||
char id=122 x=426 y=383 width=40 height=47 xoffset=-5 yoffset=15 xadvance=45 page=0 chnl=0
|
||||
char id=120 x=466 y=383 width=45 height=47 xoffset=-6 yoffset=15 xadvance=48 page=0 chnl=0
|
||||
char id=119 x=0 y=432 width=63 height=47 xoffset=-7 yoffset=15 xadvance=64 page=0 chnl=0
|
||||
char id=118 x=63 y=432 width=45 height=47 xoffset=-7 yoffset=15 xadvance=46 page=0 chnl=0
|
||||
char id=62 x=108 y=432 width=43 height=46 xoffset=-5 yoffset=15 xadvance=48 page=0 chnl=0
|
||||
char id=60 x=151 y=432 width=43 height=46 xoffset=-5 yoffset=15 xadvance=48 page=0 chnl=0
|
||||
char id=42 x=194 y=432 width=43 height=44 xoffset=-5 yoffset=-1 xadvance=48 page=0 chnl=0
|
||||
char id=43 x=237 y=432 width=44 height=44 xoffset=-5 yoffset=16 xadvance=48 page=0 chnl=0
|
||||
char id=94 x=281 y=432 width=47 height=43 xoffset=-7 yoffset=-1 xadvance=48 page=0 chnl=0
|
||||
char id=39 x=328 y=432 width=25 height=40 xoffset=-3 yoffset=0 xadvance=32 page=0 chnl=0
|
||||
char id=34 x=353 y=432 width=37 height=40 xoffset=-3 yoffset=0 xadvance=44 page=0 chnl=0
|
||||
char id=44 x=390 y=432 width=28 height=38 xoffset=-6 yoffset=36 xadvance=32 page=0 chnl=0
|
||||
char id=61 x=418 y=432 width=44 height=35 xoffset=-5 yoffset=20 xadvance=48 page=0 chnl=0
|
||||
char id=96 x=462 y=432 width=29 height=28 xoffset=-5 yoffset=1 xadvance=33 page=0 chnl=0
|
||||
char id=126 x=0 y=479 width=49 height=27 xoffset=-8 yoffset=25 xadvance=48 page=0 chnl=0
|
||||
char id=46 x=49 y=479 width=25 height=26 xoffset=-4 yoffset=36 xadvance=32 page=0 chnl=0
|
||||
char id=95 x=74 y=479 width=50 height=22 xoffset=-8 yoffset=56 xadvance=48 page=0 chnl=0
|
||||
char id=45 x=124 y=479 width=31 height=22 xoffset=-7 yoffset=27 xadvance=32 page=0 chnl=0
|
Before Width: | Height: | Size: 146 KiB |
|
@ -1,198 +0,0 @@
|
|||
info face="Arial" size=57 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=9,9,9,9 spacing=-2,-2
|
||||
common lineHeight=82 base=53 scaleW=512 scaleH=512 pages=1 packed=0
|
||||
page id=0 file="default.png"
|
||||
chars count=97
|
||||
char id=0 x=440 y=315 width=48 height=55 xoffset=-2 yoffset=7 xadvance=59 page=0 chnl=0
|
||||
char id=10 x=0 y=0 width=0 height=0 xoffset=-9 yoffset=0 xadvance=16 page=0 chnl=0
|
||||
char id=32 x=0 y=0 width=0 height=0 xoffset=-9 yoffset=0 xadvance=32 page=0 chnl=0
|
||||
char id=33 x=138 y=255 width=24 height=60 xoffset=-3 yoffset=2 xadvance=33 page=0 chnl=0
|
||||
char id=34 x=391 y=424 width=34 height=34 xoffset=-7 yoffset=2 xadvance=36 page=0 chnl=0
|
||||
char id=35 x=340 y=255 width=49 height=60 xoffset=-8 yoffset=2 xadvance=48 page=0 chnl=0
|
||||
char id=36 x=324 y=0 width=46 height=66 xoffset=-7 yoffset=1 xadvance=48 page=0 chnl=0
|
||||
char id=37 x=277 y=255 width=63 height=60 xoffset=-6 yoffset=2 xadvance=67 page=0 chnl=0
|
||||
char id=38 x=364 y=315 width=52 height=59 xoffset=-6 yoffset=3 xadvance=54 page=0 chnl=0
|
||||
char id=39 x=425 y=424 width=24 height=34 xoffset=-6 yoffset=2 xadvance=27 page=0 chnl=0
|
||||
char id=40 x=127 y=0 width=32 height=71 xoffset=-5 yoffset=2 xadvance=35 page=0 chnl=0
|
||||
char id=41 x=159 y=0 width=33 height=71 xoffset=-8 yoffset=2 xadvance=35 page=0 chnl=0
|
||||
char id=42 x=355 y=424 width=36 height=36 xoffset=-7 yoffset=2 xadvance=38 page=0 chnl=0
|
||||
char id=43 x=130 y=424 width=46 height=46 xoffset=-6 yoffset=9 xadvance=49 page=0 chnl=0
|
||||
char id=44 x=449 y=424 width=24 height=33 xoffset=-4 yoffset=38 xadvance=32 page=0 chnl=0
|
||||
char id=45 x=71 y=473 width=35 height=24 xoffset=-8 yoffset=26 xadvance=35 page=0 chnl=0
|
||||
char id=46 x=47 y=473 width=24 height=24 xoffset=-4 yoffset=38 xadvance=32 page=0 chnl=0
|
||||
char id=47 x=207 y=255 width=35 height=60 xoffset=-9 yoffset=2 xadvance=32 page=0 chnl=0
|
||||
char id=48 x=319 y=315 width=45 height=59 xoffset=-6 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=49 x=422 y=255 width=34 height=59 xoffset=-3 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=50 x=456 y=255 width=46 height=59 xoffset=-7 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=51 x=0 y=315 width=45 height=59 xoffset=-6 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=52 x=45 y=315 width=47 height=59 xoffset=-8 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=53 x=92 y=315 width=45 height=59 xoffset=-6 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=54 x=137 y=315 width=46 height=59 xoffset=-7 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=55 x=183 y=315 width=46 height=59 xoffset=-7 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=56 x=229 y=315 width=45 height=59 xoffset=-6 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=57 x=274 y=315 width=45 height=59 xoffset=-6 yoffset=3 xadvance=48 page=0 chnl=0
|
||||
char id=58 x=106 y=424 width=24 height=49 xoffset=-4 yoffset=13 xadvance=32 page=0 chnl=0
|
||||
char id=59 x=416 y=315 width=24 height=58 xoffset=-4 yoffset=13 xadvance=32 page=0 chnl=0
|
||||
char id=60 x=176 y=424 width=46 height=45 xoffset=-6 yoffset=10 xadvance=49 page=0 chnl=0
|
||||
char id=61 x=309 y=424 width=46 height=36 xoffset=-6 yoffset=14 xadvance=49 page=0 chnl=0
|
||||
char id=62 x=222 y=424 width=46 height=45 xoffset=-6 yoffset=10 xadvance=49 page=0 chnl=0
|
||||
char id=63 x=162 y=255 width=45 height=60 xoffset=-6 yoffset=2 xadvance=48 page=0 chnl=0
|
||||
char id=64 x=23 y=0 width=71 height=72 xoffset=-6 yoffset=2 xadvance=74 page=0 chnl=0
|
||||
char id=65 x=390 y=73 width=57 height=60 xoffset=-10 yoffset=2 xadvance=54 page=0 chnl=0
|
||||
char id=66 x=447 y=73 width=49 height=60 xoffset=-4 yoffset=2 xadvance=54 page=0 chnl=0
|
||||
char id=67 x=426 y=0 width=53 height=62 xoffset=-6 yoffset=1 xadvance=57 page=0 chnl=0
|
||||
char id=68 x=0 y=135 width=52 height=60 xoffset=-4 yoffset=2 xadvance=57 page=0 chnl=0
|
||||
char id=69 x=52 y=135 width=49 height=60 xoffset=-4 yoffset=2 xadvance=54 page=0 chnl=0
|
||||
char id=70 x=101 y=135 width=46 height=60 xoffset=-4 yoffset=2 xadvance=51 page=0 chnl=0
|
||||
char id=71 x=0 y=73 width=56 height=62 xoffset=-6 yoffset=1 xadvance=60 page=0 chnl=0
|
||||
char id=72 x=147 y=135 width=50 height=60 xoffset=-4 yoffset=2 xadvance=57 page=0 chnl=0
|
||||
char id=73 x=479 y=0 width=24 height=60 xoffset=-4 yoffset=2 xadvance=31 page=0 chnl=0
|
||||
char id=74 x=164 y=73 width=41 height=61 xoffset=-7 yoffset=2 xadvance=45 page=0 chnl=0
|
||||
char id=75 x=197 y=135 width=52 height=60 xoffset=-4 yoffset=2 xadvance=54 page=0 chnl=0
|
||||
char id=76 x=249 y=135 width=44 height=60 xoffset=-4 yoffset=2 xadvance=48 page=0 chnl=0
|
||||
char id=77 x=293 y=135 width=58 height=60 xoffset=-5 yoffset=2 xadvance=63 page=0 chnl=0
|
||||
char id=78 x=351 y=135 width=50 height=60 xoffset=-4 yoffset=2 xadvance=57 page=0 chnl=0
|
||||
char id=79 x=56 y=73 width=57 height=62 xoffset=-6 yoffset=1 xadvance=60 page=0 chnl=0
|
||||
char id=80 x=401 y=135 width=49 height=60 xoffset=-4 yoffset=2 xadvance=54 page=0 chnl=0
|
||||
char id=81 x=370 y=0 width=56 height=65 xoffset=-6 yoffset=1 xadvance=60 page=0 chnl=0
|
||||
char id=82 x=450 y=135 width=52 height=60 xoffset=-4 yoffset=2 xadvance=57 page=0 chnl=0
|
||||
char id=83 x=113 y=73 width=51 height=62 xoffset=-6 yoffset=1 xadvance=54 page=0 chnl=0
|
||||
char id=84 x=0 y=195 width=50 height=60 xoffset=-7 yoffset=2 xadvance=51 page=0 chnl=0
|
||||
char id=85 x=205 y=73 width=50 height=61 xoffset=-4 yoffset=2 xadvance=57 page=0 chnl=0
|
||||
char id=86 x=50 y=195 width=57 height=60 xoffset=-9 yoffset=2 xadvance=54 page=0 chnl=0
|
||||
char id=87 x=107 y=195 width=73 height=60 xoffset=-8 yoffset=2 xadvance=72 page=0 chnl=0
|
||||
char id=88 x=180 y=195 width=55 height=60 xoffset=-9 yoffset=2 xadvance=53 page=0 chnl=0
|
||||
char id=89 x=235 y=195 width=55 height=60 xoffset=-9 yoffset=2 xadvance=53 page=0 chnl=0
|
||||
char id=90 x=290 y=195 width=51 height=60 xoffset=-8 yoffset=2 xadvance=51 page=0 chnl=0
|
||||
char id=91 x=192 y=0 width=30 height=71 xoffset=-5 yoffset=2 xadvance=32 page=0 chnl=0
|
||||
char id=92 x=242 y=255 width=35 height=60 xoffset=-9 yoffset=2 xadvance=32 page=0 chnl=0
|
||||
char id=93 x=222 y=0 width=30 height=71 xoffset=-8 yoffset=2 xadvance=32 page=0 chnl=0
|
||||
char id=94 x=268 y=424 width=41 height=41 xoffset=-8 yoffset=1 xadvance=40 page=0 chnl=0
|
||||
char id=95 x=106 y=473 width=52 height=24 xoffset=-10 yoffset=49 xadvance=48 page=0 chnl=0
|
||||
char id=96 x=473 y=424 width=28 height=27 xoffset=-7 yoffset=2 xadvance=35 page=0 chnl=0
|
||||
char id=97 x=0 y=374 width=46 height=50 xoffset=-7 yoffset=12 xadvance=48 page=0 chnl=0
|
||||
char id=98 x=341 y=195 width=45 height=60 xoffset=-5 yoffset=2 xadvance=48 page=0 chnl=0
|
||||
char id=99 x=46 y=374 width=45 height=50 xoffset=-7 yoffset=12 xadvance=45 page=0 chnl=0
|
||||
char id=100 x=386 y=195 width=45 height=60 xoffset=-7 yoffset=2 xadvance=48 page=0 chnl=0
|
||||
char id=101 x=91 y=374 width=47 height=50 xoffset=-7 yoffset=12 xadvance=48 page=0 chnl=0
|
||||
char id=102 x=431 y=195 width=36 height=60 xoffset=-8 yoffset=2 xadvance=32 page=0 chnl=0
|
||||
char id=103 x=255 y=73 width=45 height=61 xoffset=-7 yoffset=12 xadvance=48 page=0 chnl=0
|
||||
char id=104 x=467 y=195 width=43 height=60 xoffset=-5 yoffset=2 xadvance=48 page=0 chnl=0
|
||||
char id=105 x=0 y=255 width=24 height=60 xoffset=-5 yoffset=2 xadvance=29 page=0 chnl=0
|
||||
char id=106 x=94 y=0 width=33 height=71 xoffset=-12 yoffset=2 xadvance=29 page=0 chnl=0
|
||||
char id=107 x=24 y=255 width=43 height=60 xoffset=-5 yoffset=2 xadvance=46 page=0 chnl=0
|
||||
char id=108 x=67 y=255 width=24 height=60 xoffset=-5 yoffset=2 xadvance=29 page=0 chnl=0
|
||||
char id=109 x=138 y=374 width=60 height=50 xoffset=-5 yoffset=12 xadvance=65 page=0 chnl=0
|
||||
char id=110 x=198 y=374 width=43 height=50 xoffset=-5 yoffset=12 xadvance=48 page=0 chnl=0
|
||||
char id=111 x=241 y=374 width=47 height=50 xoffset=-7 yoffset=12 xadvance=48 page=0 chnl=0
|
||||
char id=112 x=300 y=73 width=45 height=61 xoffset=-5 yoffset=12 xadvance=48 page=0 chnl=0
|
||||
char id=113 x=345 y=73 width=45 height=61 xoffset=-7 yoffset=12 xadvance=48 page=0 chnl=0
|
||||
char id=114 x=332 y=374 width=34 height=49 xoffset=-5 yoffset=13 xadvance=35 page=0 chnl=0
|
||||
char id=115 x=288 y=374 width=44 height=50 xoffset=-7 yoffset=12 xadvance=45 page=0 chnl=0
|
||||
char id=116 x=389 y=255 width=33 height=59 xoffset=-8 yoffset=3 xadvance=32 page=0 chnl=0
|
||||
char id=117 x=366 y=374 width=43 height=49 xoffset=-5 yoffset=13 xadvance=48 page=0 chnl=0
|
||||
char id=118 x=409 y=374 width=45 height=49 xoffset=-8 yoffset=13 xadvance=45 page=0 chnl=0
|
||||
char id=119 x=0 y=424 width=61 height=49 xoffset=-10 yoffset=13 xadvance=57 page=0 chnl=0
|
||||
char id=120 x=454 y=374 width=46 height=49 xoffset=-9 yoffset=13 xadvance=44 page=0 chnl=0
|
||||
char id=121 x=91 y=255 width=47 height=60 xoffset=-9 yoffset=13 xadvance=43 page=0 chnl=0
|
||||
char id=122 x=61 y=424 width=45 height=49 xoffset=-8 yoffset=13 xadvance=44 page=0 chnl=0
|
||||
char id=123 x=252 y=0 width=36 height=71 xoffset=-8 yoffset=2 xadvance=35 page=0 chnl=0
|
||||
char id=124 x=0 y=0 width=23 height=73 xoffset=-4 yoffset=2 xadvance=30 page=0 chnl=0
|
||||
char id=125 x=288 y=0 width=36 height=71 xoffset=-8 yoffset=2 xadvance=35 page=0 chnl=0
|
||||
char id=126 x=0 y=473 width=47 height=29 xoffset=-7 yoffset=18 xadvance=49 page=0 chnl=0
|
||||
kernings count=96
|
||||
kerning first=118 second=44 amount=-4
|
||||
kerning first=49 second=49 amount=-4
|
||||
kerning first=87 second=58 amount=-1
|
||||
kerning first=80 second=65 amount=-4
|
||||
kerning first=84 second=79 amount=-1
|
||||
kerning first=65 second=87 amount=-2
|
||||
kerning first=82 second=86 amount=-1
|
||||
kerning first=76 second=87 amount=-4
|
||||
kerning first=86 second=105 amount=-1
|
||||
kerning first=89 second=97 amount=-4
|
||||
kerning first=84 second=99 amount=-6
|
||||
kerning first=86 second=101 amount=-3
|
||||
kerning first=102 second=102 amount=-1
|
||||
kerning first=84 second=105 amount=-2
|
||||
kerning first=84 second=111 amount=-6
|
||||
kerning first=89 second=112 amount=-4
|
||||
kerning first=89 second=113 amount=-5
|
||||
kerning first=84 second=114 amount=-2
|
||||
kerning first=84 second=115 amount=-6
|
||||
kerning first=87 second=117 amount=-1
|
||||
kerning first=89 second=118 amount=-3
|
||||
kerning first=65 second=119 amount=-1
|
||||
kerning first=84 second=121 amount=-3
|
||||
kerning first=87 second=45 amount=-1
|
||||
kerning first=86 second=121 amount=-2
|
||||
kerning first=89 second=44 amount=-7
|
||||
kerning first=65 second=32 amount=-3
|
||||
kerning first=86 second=44 amount=-5
|
||||
kerning first=89 second=105 amount=-2
|
||||
kerning first=86 second=111 amount=-3
|
||||
kerning first=76 second=32 amount=-2
|
||||
kerning first=80 second=46 amount=-7
|
||||
kerning first=70 second=44 amount=-6
|
||||
kerning first=84 second=97 amount=-6
|
||||
kerning first=84 second=32 amount=-1
|
||||
kerning first=84 second=58 amount=-6
|
||||
kerning first=89 second=111 amount=-5
|
||||
kerning first=80 second=44 amount=-7
|
||||
kerning first=65 second=86 amount=-4
|
||||
kerning first=89 second=101 amount=-5
|
||||
kerning first=76 second=86 amount=-4
|
||||
kerning first=86 second=59 amount=-2
|
||||
kerning first=86 second=117 amount=-2
|
||||
kerning first=118 second=46 amount=-4
|
||||
kerning first=89 second=117 amount=-3
|
||||
kerning first=86 second=65 amount=-4
|
||||
kerning first=89 second=58 amount=-3
|
||||
kerning first=65 second=84 amount=-4
|
||||
kerning first=82 second=84 amount=-1
|
||||
kerning first=86 second=58 amount=-2
|
||||
kerning first=119 second=44 amount=-3
|
||||
kerning first=121 second=46 amount=-4
|
||||
kerning first=89 second=65 amount=-4
|
||||
kerning first=84 second=101 amount=-6
|
||||
kerning first=32 second=84 amount=-1
|
||||
kerning first=70 second=46 amount=-6
|
||||
kerning first=86 second=97 amount=-4
|
||||
kerning first=82 second=89 amount=-1
|
||||
kerning first=80 second=32 amount=-1
|
||||
kerning first=87 second=111 amount=-1
|
||||
kerning first=84 second=117 amount=-2
|
||||
kerning first=65 second=121 amount=-1
|
||||
kerning first=87 second=114 amount=-1
|
||||
kerning first=87 second=101 amount=-1
|
||||
kerning first=84 second=46 amount=-6
|
||||
kerning first=84 second=59 amount=-6
|
||||
kerning first=32 second=89 amount=-1
|
||||
kerning first=70 second=65 amount=-3
|
||||
kerning first=87 second=121 amount=-1
|
||||
kerning first=76 second=121 amount=-2
|
||||
kerning first=89 second=59 amount=-4
|
||||
kerning first=84 second=65 amount=-4
|
||||
kerning first=121 second=44 amount=-4
|
||||
kerning first=87 second=46 amount=-3
|
||||
kerning first=114 second=44 amount=-3
|
||||
kerning first=87 second=65 amount=-2
|
||||
kerning first=119 second=46 amount=-3
|
||||
kerning first=87 second=44 amount=-3
|
||||
kerning first=86 second=45 amount=-3
|
||||
kerning first=89 second=32 amount=-1
|
||||
kerning first=89 second=45 amount=-5
|
||||
kerning first=86 second=46 amount=-5
|
||||
kerning first=76 second=84 amount=-4
|
||||
kerning first=84 second=44 amount=-6
|
||||
kerning first=65 second=89 amount=-4
|
||||
kerning first=82 second=87 amount=-1
|
||||
kerning first=87 second=59 amount=-1
|
||||
kerning first=32 second=65 amount=-3
|
||||
kerning first=89 second=46 amount=-7
|
||||
kerning first=84 second=119 amount=-3
|
||||
kerning first=87 second=97 amount=-2
|
||||
kerning first=65 second=118 amount=-1
|
||||
kerning first=86 second=114 amount=-2
|
||||
kerning first=114 second=46 amount=-3
|
||||
kerning first=76 second=89 amount=-4
|
||||
kerning first=84 second=45 amount=-3
|
Before Width: | Height: | Size: 128 KiB |
|
@ -1,26 +0,0 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: 'very good grass.blend'
|
||||
# www.blender.org
|
||||
o Plane
|
||||
v 0.000000 1.963634 1.000000
|
||||
v -0.000000 -0.036366 1.000000
|
||||
v 0.000000 1.963634 -1.000000
|
||||
v -0.000000 -0.036366 -1.000000
|
||||
v -0.978509 1.963634 0.206204
|
||||
v -0.978509 -0.036366 0.206204
|
||||
v 0.978509 1.963634 -0.206204
|
||||
v 0.978509 -0.036366 -0.206204
|
||||
vt 0.000977 -0.001953
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.997070 0.001953
|
||||
vt -0.001953 0.998047
|
||||
vt 0.998047 0.000000
|
||||
vt 0.998047 0.997070
|
||||
vt 0.003907 -0.002930
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn 0.2062 -0.0000 0.9785
|
||||
s off
|
||||
f 2/1/1 3/2/1 1/3/1
|
||||
f 2/1/1 4/4/1 3/2/1
|
||||
f 5/5/2 8/6/2 7/7/2
|
||||
f 5/5/2 6/8/2 8/6/2
|
|
@ -1,29 +0,0 @@
|
|||
#version 400
|
||||
|
||||
in vec2 textureCoords;
|
||||
|
||||
out vec4 out_Colour;
|
||||
|
||||
uniform sampler2D colourTexture;
|
||||
|
||||
const float brightness = 1.2;
|
||||
const float contrast = 0.1;
|
||||
const float saturation = 1.65;
|
||||
|
||||
void main(void){
|
||||
|
||||
out_Colour = texture(colourTexture, textureCoords);
|
||||
|
||||
// calculate saturation
|
||||
vec3 luminanceWeights = vec3(0.299, 0.587, 0.114);
|
||||
float luminance = dot(out_Colour.rgb, luminanceWeights);
|
||||
out_Colour = mix(vec4(luminance), out_Colour, saturation);
|
||||
|
||||
// calculate contrast
|
||||
out_Colour.rgb = (out_Colour.rgb - 0.5) * (1.0 + contrast) + 0.5;
|
||||
|
||||
// calculate brightness
|
||||
out_Colour.rgb *= brightness;
|
||||
|
||||
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
#version 400
|
||||
|
||||
in vec2 position;
|
||||
|
||||
out vec2 textureCoords;
|
||||
|
||||
void main(void){
|
||||
|
||||
gl_Position = vec4(position, 0.0, 1.0);
|
||||
textureCoords = position * 0.5 + 0.5;
|
||||
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
#version 140
|
||||
|
||||
in vec2 pass_textureCoords;
|
||||
in vec3 surfaceNormal;
|
||||
in vec3 toLightVector[5];
|
||||
in vec3 toCameraVector;
|
||||
in float visibility;
|
||||
|
||||
out vec4 out_Color;
|
||||
|
||||
uniform sampler2D textureSampler;
|
||||
uniform vec3 lightColour[5];
|
||||
uniform vec3 attenuation[5];
|
||||
uniform float shineDamper;
|
||||
uniform float reflectivity;
|
||||
uniform vec3 skyColour;
|
||||
|
||||
void main(void){
|
||||
|
||||
vec3 unitNormal = normalize(surfaceNormal);
|
||||
vec3 unitVectorToCamera = normalize(toCameraVector);
|
||||
|
||||
vec3 totalDiffuse = vec3(0.0);
|
||||
vec3 totalSpecular = vec3(0.0);
|
||||
|
||||
for(int i=0;i<5;i++){
|
||||
float distance = length(toLightVector[i]);
|
||||
float attFactor = attenuation[i].x + (attenuation[i].y * distance) + (attenuation[i].z * distance * distance);
|
||||
vec3 unitLightVector = normalize(toLightVector[i]);
|
||||
float nDotl = dot(unitNormal, unitLightVector);
|
||||
float brightness = max(nDotl, 0.0);
|
||||
vec3 lightDirection = -unitLightVector;
|
||||
vec3 reflectedLightDirection = reflect(lightDirection, unitNormal);
|
||||
float specularFactor = dot(reflectedLightDirection, unitVectorToCamera);
|
||||
specularFactor = max(specularFactor, 0.0);
|
||||
float dampedFactor = pow(specularFactor, shineDamper);
|
||||
totalDiffuse = totalDiffuse + (brightness * lightColour[i])/attFactor;
|
||||
totalSpecular = totalSpecular + (dampedFactor * reflectivity * lightColour[i])/attFactor;
|
||||
}
|
||||
totalDiffuse = max(totalDiffuse, 0.2);
|
||||
|
||||
vec4 textureColour = texture(textureSampler, pass_textureCoords);
|
||||
if(textureColour.a<0.5){
|
||||
discard;
|
||||
}
|
||||
|
||||
out_Color = vec4(totalDiffuse, 1.0) * textureColour + vec4(totalSpecular, 1.0);
|
||||
out_Color = mix(vec4(skyColour, 1.0), out_Color, visibility);
|
||||
|
||||
}
|
|
@ -1,53 +0,0 @@
|
|||
#version 150
|
||||
|
||||
|
||||
in vec3 position;
|
||||
in vec2 textureCoords;
|
||||
in vec3 normal;
|
||||
|
||||
out vec2 pass_textureCoords;
|
||||
out vec3 surfaceNormal;
|
||||
out vec3 toLightVector[5];
|
||||
out vec3 toCameraVector;
|
||||
out float visibility;
|
||||
|
||||
uniform mat4 transformationMatrix;
|
||||
uniform mat4 projectionMatrix;
|
||||
uniform mat4 viewMatrix;
|
||||
uniform vec3 lightPosition[5];
|
||||
|
||||
const vec4 plane = vec4(0, -1, 0, 15);
|
||||
|
||||
uniform float useFakeLighting;
|
||||
|
||||
const float density = 0.01;
|
||||
const float gradient = 5.0;
|
||||
|
||||
void main(void){
|
||||
|
||||
vec4 worldPosition = transformationMatrix * vec4(position.xyz,1.0);
|
||||
|
||||
gl_ClipDistance[0] = dot(worldPosition, plane);
|
||||
|
||||
vec4 positionRelativeToCam = viewMatrix * worldPosition;
|
||||
|
||||
gl_Position = projectionMatrix * positionRelativeToCam;
|
||||
pass_textureCoords = textureCoords;
|
||||
|
||||
vec3 actualNormal = normal;
|
||||
if(useFakeLighting > 0.5){
|
||||
actualNormal = vec3(0.0, 1.0, 0.0);
|
||||
}
|
||||
|
||||
surfaceNormal = (transformationMatrix * vec4(actualNormal, 0.0)).xyz;
|
||||
for(int i=0;i<5;i++){
|
||||
toLightVector[i] = lightPosition[i] - worldPosition.xyz;
|
||||
}
|
||||
toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition.xyz;
|
||||
|
||||
float distance = length(positionRelativeToCam.xyz);
|
||||
visibility = exp(-pow((distance*density), gradient));
|
||||
visibility = clamp(visibility, 0.0, 1.0);
|
||||
|
||||
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
#version 330
|
||||
|
||||
in vec2 pass_textureCoords;
|
||||
|
||||
out vec4 out_colour;
|
||||
|
||||
uniform vec3 colour;
|
||||
uniform sampler2D fontAtlas;
|
||||
|
||||
const float width = 0;
|
||||
const float edge = 1.0;
|
||||
|
||||
uniform float borderWidth;
|
||||
uniform float borderEdge;
|
||||
|
||||
uniform vec2 offset;
|
||||
|
||||
uniform vec3 outlineColour;
|
||||
|
||||
void main(void){
|
||||
|
||||
float distance = 1.0 - texture(fontAtlas, pass_textureCoords).a;
|
||||
float alpha = 1.0 - smoothstep(width, width + edge, distance);
|
||||
|
||||
float distance2 = 1.0 - texture(fontAtlas, pass_textureCoords + offset).a;
|
||||
float outlineAlpha = 1.0 - smoothstep(borderWidth, borderWidth + borderEdge, distance2);
|
||||
|
||||
float overallAlpha = alpha + (1.0 - alpha) * outlineAlpha;
|
||||
vec3 overallColour = mix(outlineColour, colour, alpha / overallAlpha);
|
||||
|
||||
out_colour = vec4(overallColour, overallAlpha);
|
||||
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
#version 330
|
||||
|
||||
in vec2 position;
|
||||
in vec2 textureCoords;
|
||||
|
||||
out vec2 pass_textureCoords;
|
||||
|
||||
uniform vec2 translation;
|
||||
|
||||
void main(void){
|
||||
|
||||
gl_Position = vec4(position, 0.0, 1.0);
|
||||
pass_textureCoords = textureCoords;
|
||||
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
#version 140
|
||||
|
||||
in vec2 textureCoords;
|
||||
|
||||
out vec4 out_Color;
|
||||
|
||||
uniform sampler2D guiTexture;
|
||||
|
||||
void main(void){
|
||||
|
||||
out_Color = texture(guiTexture,textureCoords);
|
||||
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
#version 140
|
||||
|
||||
in vec2 position;
|
||||
|
||||
out vec2 textureCoords;
|
||||
|
||||
uniform mat4 transformationMatrix;
|
||||
|
||||
void main(void){
|
||||
|
||||
gl_Position = transformationMatrix * vec4(position, 0.0, 1.0);
|
||||
textureCoords = vec2((position.x+1.0)/2.0, 1 - (position.y+1.0)/2.0);
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
#version 400
|
||||
|
||||
in vec2 pass_textureCoordinates;
|
||||
in vec3 toLightVector[4];
|
||||
in vec3 toCameraVector;
|
||||
in float visibility;
|
||||
|
||||
out vec4 out_Color;
|
||||
|
||||
uniform sampler2D modelTexture;
|
||||
uniform sampler2D normalMap;
|
||||
uniform vec3 lightColour[4];
|
||||
uniform vec3 attenuation[4];
|
||||
uniform float shineDamper;
|
||||
uniform float reflectivity;
|
||||
uniform vec3 skyColour;
|
||||
|
||||
void main(void){
|
||||
|
||||
vec4 normalMapValue = 2.0 * texture(normalMap, pass_textureCoordinates) - 1.0;
|
||||
|
||||
vec3 unitNormal = normalize(normalMapValue.rgb);
|
||||
vec3 unitVectorToCamera = normalize(toCameraVector);
|
||||
|
||||
vec3 totalDiffuse = vec3(0.0);
|
||||
vec3 totalSpecular = vec3(0.0);
|
||||
|
||||
for(int i=0;i<4;i++){
|
||||
float distance = length(toLightVector[i]);
|
||||
float attFactor = attenuation[i].x + (attenuation[i].y * distance) + (attenuation[i].z * distance * distance);
|
||||
vec3 unitLightVector = normalize(toLightVector[i]);
|
||||
float nDotl = dot(unitNormal,unitLightVector);
|
||||
float brightness = max(nDotl,0.0);
|
||||
vec3 lightDirection = -unitLightVector;
|
||||
vec3 reflectedLightDirection = reflect(lightDirection,unitNormal);
|
||||
float specularFactor = dot(reflectedLightDirection , unitVectorToCamera);
|
||||
specularFactor = max(specularFactor,0.0);
|
||||
float dampedFactor = pow(specularFactor,shineDamper);
|
||||
totalDiffuse = totalDiffuse + (brightness * lightColour[i])/attFactor;
|
||||
totalSpecular = totalSpecular + (dampedFactor * reflectivity * lightColour[i])/attFactor;
|
||||
}
|
||||
totalDiffuse = max(totalDiffuse, 0.2);
|
||||
|
||||
vec4 textureColour = texture(modelTexture,pass_textureCoordinates);
|
||||
if(textureColour.a<0.5){
|
||||
discard;
|
||||
}
|
||||
|
||||
out_Color = vec4(totalDiffuse,1.0) * textureColour + vec4(totalSpecular,1.0);
|
||||
out_Color = mix(vec4(skyColour,1.0),out_Color, visibility);
|
||||
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
#version 400
|
||||
|
||||
in vec3 position;
|
||||
in vec2 textureCoordinates;
|
||||
in vec3 normal;
|
||||
in vec3 tangent;
|
||||
|
||||
out vec2 pass_textureCoordinates;
|
||||
out vec3 toLightVector[4];
|
||||
out vec3 toCameraVector;
|
||||
out float visibility;
|
||||
out vec3 pass_tangent;
|
||||
|
||||
uniform mat4 transformationMatrix;
|
||||
uniform mat4 projectionMatrix;
|
||||
uniform mat4 viewMatrix;
|
||||
uniform vec3 lightPositionEyeSpace[4];
|
||||
|
||||
uniform float numberOfRows;
|
||||
uniform vec2 offset;
|
||||
|
||||
const float density = 0;
|
||||
const float gradient = 5.0;
|
||||
|
||||
uniform vec4 plane;
|
||||
|
||||
void main(void){
|
||||
|
||||
|
||||
vec4 worldPosition = transformationMatrix * vec4(position,1.0);
|
||||
gl_ClipDistance[0] = dot(worldPosition, plane);
|
||||
mat4 modelViewMatrix = viewMatrix * transformationMatrix;
|
||||
vec4 positionRelativeToCam = modelViewMatrix * vec4(position,1.0);
|
||||
gl_Position = projectionMatrix * positionRelativeToCam;
|
||||
|
||||
pass_textureCoordinates = (textureCoordinates);
|
||||
|
||||
vec3 surfaceNormal = (modelViewMatrix * vec4(normal,0.0)).xyz;
|
||||
|
||||
vec3 norm = normalize(surfaceNormal);
|
||||
vec3 tang = normalize((modelViewMatrix * vec4(tangent, 0.0)).xyz);
|
||||
vec3 bitang = normalize(cross(norm, tang));
|
||||
|
||||
mat3 toTangentSpace = mat3(
|
||||
|
||||
tang.x, bitang.x, norm.x,
|
||||
tang.y, bitang.y, norm.y,
|
||||
tang.z, bitang.z, norm.z
|
||||
);
|
||||
|
||||
for(int i=0;i<4;i++){
|
||||
toLightVector[i] = toTangentSpace * (lightPositionEyeSpace[i] - positionRelativeToCam.xyz);
|
||||
}
|
||||
toCameraVector = toTangentSpace * (-positionRelativeToCam.xyz);
|
||||
|
||||
float distance = length(positionRelativeToCam.xyz);
|
||||
visibility = exp(-pow((distance*density),gradient));
|
||||
visibility = clamp(visibility,0.0,1.0);
|
||||
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
#version 140
|
||||
|
||||
out vec4 out_colour;
|
||||
|
||||
in vec2 textureCoords1;
|
||||
in vec2 textureCoords2;
|
||||
in float blend;
|
||||
|
||||
uniform sampler2D particleTexture;
|
||||
|
||||
void main(void){
|
||||
|
||||
vec4 colour1 = texture(particleTexture, textureCoords1);
|
||||
vec4 colour2 = texture(particleTexture, textureCoords2);
|
||||
|
||||
out_colour = mix(colour1, colour2, blend);
|
||||
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
#version 140
|
||||
|
||||
in vec2 position;
|
||||
|
||||
in mat4 modelViewMatrix;
|
||||
in vec4 texOffsets;
|
||||
in float blendFactor;
|
||||
|
||||
|
||||
out vec2 textureCoords1;
|
||||
out vec2 textureCoords2;
|
||||
out float blend;
|
||||
|
||||
uniform mat4 projectionMatrix;
|
||||
uniform float numberOfRows;
|
||||
|
||||
void main(void){
|
||||
|
||||
vec2 textureCoords = position + vec2(0.5, 0.5);
|
||||
textureCoords.y = 1.0 - textureCoords.y;
|
||||
|
||||
textureCoords /= numberOfRows;
|
||||
textureCoords1 = textureCoords + texOffsets.xy;
|
||||
textureCoords2 = textureCoords + texOffsets.zw;
|
||||
blend = blendFactor;
|
||||
|
||||
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 0.0, 1.0);
|
||||
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#version 400
|
||||
|
||||
in vec2 textureCoords;
|
||||
|
||||
out vec4 out_Colour;
|
||||
|
||||
uniform sampler2D modelTexture;
|
||||
|
||||
void main(void){
|
||||
float alpha = texture(modelTexture, textureCoords).a;
|
||||
if(alpha < 0.4){
|
||||
discard;
|
||||
}
|
||||
|
||||
out_Colour = vec4(1.0, 1.0, 1.0, 0.1);
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#version 150
|
||||
|
||||
in vec3 in_position;
|
||||
in vec2 in_textureCoords;
|
||||
|
||||
out vec2 textureCoords;
|
||||
|
||||
uniform mat4 mvpMatrix;
|
||||
|
||||
void main(void){
|
||||
|
||||
textureCoords = in_textureCoords;
|
||||
|
||||
gl_Position = mvpMatrix * vec4(in_position, 1.0);
|
||||
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
#version 400
|
||||
|
||||
in vec3 textureCoords;
|
||||
out vec4 out_Color;
|
||||
|
||||
uniform samplerCube cubeMap;
|
||||
|
||||
void main(void){
|
||||
out_Color = texture(cubeMap, textureCoords);
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
#version 400
|
||||
|
||||
in vec3 position;
|
||||
out vec3 textureCoords;
|
||||
|
||||
uniform mat4 projectionMatrix;
|
||||
uniform mat4 viewMatrix;
|
||||
|
||||
void main(void){
|
||||
|
||||
gl_Position = projectionMatrix * viewMatrix * vec4(position, 1.0);
|
||||
textureCoords = position;
|
||||
|
||||
}
|
|
@ -1,87 +0,0 @@
|
|||
#version 400 core
|
||||
|
||||
in vec2 pass_textureCoords;
|
||||
in vec3 surfaceNormal;
|
||||
in vec3 toLightVector[5];
|
||||
in vec3 toCameraVector;
|
||||
in float visibility;
|
||||
in vec4 shadowCoords;
|
||||
|
||||
out vec4 out_Color;
|
||||
|
||||
uniform sampler2D backgroundTexture;
|
||||
uniform sampler2D rTexture;
|
||||
uniform sampler2D gTexture;
|
||||
uniform sampler2D bTexture;
|
||||
uniform sampler2D blendMap;
|
||||
uniform sampler2D shadowMap;
|
||||
|
||||
uniform vec3 attenuation[5];
|
||||
uniform vec3 lightColour[5];
|
||||
const float shineDamper = 0;
|
||||
const float reflectivity = 0;
|
||||
uniform vec3 skyColour;
|
||||
//TODO: multiple tasks
|
||||
const int pcfCount = 2; // sampling count make a uniform and changeble
|
||||
const float totalTexels = (pcfCount * 2.0 + 1.0) * (pcfCount * 2.0 + 1.0);
|
||||
|
||||
void main(void){
|
||||
|
||||
float mapSize = 5120.0; //make a uniform so it matches the java variable
|
||||
|
||||
float texelSize = 1.0 / mapSize;
|
||||
float total = 0.0;
|
||||
|
||||
for(int x=-pcfCount; x<=pcfCount; x++){
|
||||
for(int y=-pcfCount; y<=pcfCount; y++){
|
||||
float objectNearestLight = texture(shadowMap, shadowCoords.xy + vec2(x,y) * texelSize).r;
|
||||
if(shadowCoords.z > objectNearestLight){
|
||||
total+=1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
total /= totalTexels;
|
||||
|
||||
float lightFactor = 1.0 - (total * shadowCoords.w);
|
||||
|
||||
|
||||
vec4 blendMapColour = texture(blendMap, pass_textureCoords);
|
||||
|
||||
vec3 unitVectorToCamera = normalize(toCameraVector);
|
||||
|
||||
float backTextureAmount = 1 - (blendMapColour.r + blendMapColour.g + blendMapColour.b);
|
||||
vec2 tiledCoords = pass_textureCoords * 40.0;
|
||||
vec4 backgroundTextureColour = texture(backgroundTexture, tiledCoords) * backTextureAmount;
|
||||
vec4 rTextureColour = texture(rTexture, tiledCoords) * blendMapColour.r;
|
||||
vec4 gTextureColour = texture(gTexture, tiledCoords) * blendMapColour.g;
|
||||
vec4 bTextureColour = texture(bTexture, tiledCoords) * blendMapColour.b;
|
||||
|
||||
vec4 totalColour = backgroundTextureColour + rTextureColour + gTextureColour + bTextureColour;
|
||||
|
||||
|
||||
vec3 totalDiffuse = vec3(0.0);
|
||||
vec3 totalSpecular = vec3(0.0);
|
||||
|
||||
for(int i=0;i<5;i++){
|
||||
float distance = length(toLightVector[i]);
|
||||
float attFactor = attenuation[i].x + (attenuation[i].y * distance) + (attenuation[i].z * distance * distance);
|
||||
vec3 unitNormal = normalize(surfaceNormal);
|
||||
vec3 unitLightVector = normalize(toLightVector[i]);
|
||||
float nDotl = dot(unitNormal, unitLightVector);
|
||||
float brightness = max(nDotl, 0.2);
|
||||
vec3 lightDirection = -unitLightVector;
|
||||
vec3 reflectedLightDirection = reflect(lightDirection, unitNormal);
|
||||
float specularFactor = dot(reflectedLightDirection, unitVectorToCamera);
|
||||
specularFactor = max(specularFactor, 0.0);
|
||||
float dampedFactor = pow(specularFactor, shineDamper);
|
||||
|
||||
totalDiffuse = totalDiffuse + brightness * lightColour[i] / attFactor;
|
||||
totalSpecular = totalSpecular + dampedFactor * reflectivity * lightColour[i] / attFactor;
|
||||
|
||||
}
|
||||
totalDiffuse = max(totalDiffuse * lightFactor, 0.2);
|
||||
|
||||
out_Color = vec4(totalDiffuse, 1.0) * totalColour + vec4(totalSpecular, 1.0);
|
||||
out_Color = mix(vec4(skyColour, 1.0), out_Color, visibility);
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
#version 150
|
||||
in vec3 position;
|
||||
in vec2 textureCoords;
|
||||
in vec3 normal;
|
||||
|
||||
out vec2 pass_textureCoords;
|
||||
out vec3 surfaceNormal;
|
||||
out vec3 toLightVector[5];
|
||||
out vec3 toCameraVector;
|
||||
out float visibility;
|
||||
out vec4 shadowCoords;
|
||||
|
||||
uniform mat4 transformationMatrix;
|
||||
uniform mat4 projectionMatrix;
|
||||
uniform mat4 viewMatrix;
|
||||
uniform vec3 lightPosition[5];
|
||||
|
||||
uniform mat4 toShadowMapSpace;
|
||||
|
||||
const float density = 0.01;
|
||||
const float gradient = 5;
|
||||
const float shadowDistance = 150.0;
|
||||
const float transitionDistance = 10.0;
|
||||
|
||||
void main(void){
|
||||
|
||||
vec4 worldPosition = transformationMatrix * vec4(position.xyz,1.0);
|
||||
shadowCoords = toShadowMapSpace * worldPosition;
|
||||
|
||||
vec4 positionRelativeToCam = viewMatrix * worldPosition;
|
||||
|
||||
gl_Position = projectionMatrix * positionRelativeToCam;
|
||||
pass_textureCoords = textureCoords;
|
||||
|
||||
surfaceNormal = (transformationMatrix * vec4(normal, 0.0)).xyz;
|
||||
for(int i=0;i<5;i++){
|
||||
toLightVector[i] = lightPosition[i] - worldPosition.xyz;
|
||||
}
|
||||
toCameraVector = (inverse(viewMatrix) * vec4(0.0, 0.0, 0.0, 1.0)).xyz - worldPosition.xyz;
|
||||
|
||||
float distance = length(positionRelativeToCam.xyz);
|
||||
visibility = exp(-pow((distance * density), gradient));
|
||||
visibility = clamp(visibility, 0.0, 1.0);
|
||||
|
||||
distance = distance - (shadowDistance - transitionDistance);
|
||||
distance = distance / transitionDistance;
|
||||
shadowCoords.w = clamp(1.0-distance, 0.0, 1.0);
|
||||
|
||||
}
|
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 301 KiB |
Before Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 440 KiB |
Before Width: | Height: | Size: 591 KiB |
Before Width: | Height: | Size: 450 KiB |
Before Width: | Height: | Size: 430 KiB |
Before Width: | Height: | Size: 509 KiB |
Before Width: | Height: | Size: 166 KiB |
Before Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 517 KiB |
Before Width: | Height: | Size: 238 KiB |
Before Width: | Height: | Size: 198 KiB |