pull/1/head
hYdos 2020-02-24 07:36:20 +10:00
parent 2b428fa829
commit c1877e900e
107 changed files with 161 additions and 208786 deletions

3
.gitignore vendored
View File

@ -1,3 +1,2 @@
/target/
*.class
*.class
*.class

View File

@ -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{
@ -36,10 +37,16 @@ public class Example extends Game{
GingerMain.init();
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();
@ -47,8 +54,39 @@ public class Example extends Game{
data = new GameData(player, camera);
data.handleGuis = false;
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);

View File

@ -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;

View File

@ -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) {

View File

@ -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;

View File

@ -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;

View File

@ -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.
*/
@ -184,6 +220,8 @@ public class GUIText {
protected String getTextString() {
return textString;
}
public Vector3f getOutlineColour() {
return outlineColour;

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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));
}
}

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -1,13 +0,0 @@
#version 140
in vec2 textureCoords;
out vec4 out_Color;
uniform sampler2D guiTexture;
void main(void){
out_Color = texture(guiTexture,textureCoords);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -1,10 +0,0 @@
#version 400
in vec3 textureCoords;
out vec4 out_Color;
uniform samplerCube cubeMap;
void main(void){
out_Color = texture(cubeMap, textureCoords);
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 591 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 517 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

Some files were not shown because too many files have changed in this diff Show More