Added basic light shader

Added dropbox capability
master
Edward Peterson 9 years ago
parent c5cb8373ab
commit 11679c2ffd

@ -0,0 +1,22 @@
//SpriteBatch will use texture unit 0
uniform sampler2D u_texture;
uniform vec2 u_screenResolution;
//"in" varyings from our vertex shader
varying vec4 vColor;
varying vec2 vTexCoord;
void main() {
//sample the texture
vec4 texColor = texture2D(u_texture, vTexCoord);
float dx = u_screenResolution.x / 2.0 - gl_FragCoord.x;
float dy = u_screenResolution.y / 2.0 - gl_FragCoord.y;
float dxi = u_screenResolution.x / 2.0;
float dyi = u_screenResolution.y / 2.0;
float dis = sqrt(dx * dx + dy * dy);
float disFull = sqrt(dxi * dxi + dyi * dyi);
float disSq = (1-(dis / disFull));
texColor.rgb = texColor.rgb * disSq * disSq * disSq * disSq * disSq;
//final color
gl_FragColor = texColor * vColor;
}

@ -0,0 +1,16 @@
attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
varying vec4 vColor;
varying vec2 vTexCoord;
varying vec2 vScreenPos;
void main() {
vColor = a_color;
vTexCoord = a_texCoord0;
gl_Position = u_projTrans * a_position;
}

@ -23,7 +23,7 @@ public class ChuckGame extends ApplicationAdapter implements InputProcessor{
ArrayList<Entity> entities = new ArrayList<Entity>(); ArrayList<Entity> entities = new ArrayList<Entity>();
Comparator<Entity> zSorter; Comparator<Entity> zSorter;
TiledMap tiledMap; TiledMap tiledMap;
TiledMapRenderer tmRenderer; OrthogonalTiledMapRenderer tmRenderer;
ArrayList<Rectangle> collisions = new ArrayList<Rectangle>(); ArrayList<Rectangle> collisions = new ArrayList<Rectangle>();
@Override @Override
public void create () { public void create () {
@ -42,7 +42,7 @@ public class ChuckGame extends ApplicationAdapter implements InputProcessor{
}; };
tiledMap = new TmxMapLoader().load("testmap.tmx"); tiledMap = new TmxMapLoader().load("testmap.tmx");
tmRenderer = new OrthogonalTiledMapRenderer(tiledMap); tmRenderer = new OrthogonalTiledMapRenderer(tiledMap, graphics.getBatch());
MapLayer ml = tiledMap.getLayers().get("collisions"); MapLayer ml = tiledMap.getLayers().get("collisions");
for(MapObject o: ml.getObjects()){ for(MapObject o: ml.getObjects()){
@ -53,6 +53,7 @@ public class ChuckGame extends ApplicationAdapter implements InputProcessor{
} }
} }
@Override @Override
@ -78,7 +79,7 @@ public class ChuckGame extends ApplicationAdapter implements InputProcessor{
tmRenderer.setView(graphics.cam); tmRenderer.setView(graphics.cam);
tmRenderer.render(); tmRenderer.render();
graphics.startSprite(); graphics.startSprite();
// tmRenderer.getBatch().setShader(graphics.shader);
// player.draw(graphics); // player.draw(graphics);
for(Entity e: entities){ for(Entity e: entities){
@ -95,13 +96,13 @@ public class ChuckGame extends ApplicationAdapter implements InputProcessor{
@Override @Override
public boolean keyDown(int keycode) { public boolean keyDown(int keycode) {
player.controller.acceptEvent(keycode, true, player, entities); player.controller.acceptEvent(keycode, true, player, entities, collisions);
return false; return false;
} }
@Override @Override
public boolean keyUp(int keycode) { public boolean keyUp(int keycode) {
player.controller.acceptEvent(keycode, false, player, entities); player.controller.acceptEvent(keycode, false, player, entities, collisions);
return false; return false;
} }

@ -2,6 +2,8 @@ package com.toasted.chuck;
import java.util.ArrayList; import java.util.ArrayList;
import com.badlogic.gdx.math.Rectangle;
public interface EntityController { public interface EntityController {
public void acceptEvent(int keycode, boolean newState, Entity owner, ArrayList<Entity> entities); public void acceptEvent(int keycode, boolean newState, Entity owner, ArrayList<Entity> entities, ArrayList<Rectangle> collisions);
} }

@ -30,7 +30,7 @@ public class EntityPlayer extends Entity{
collision = new Rectangle(0, 0, 16, 16); collision = new Rectangle(0, 0, 16, 16);
controller = new EntityController(){ controller = new EntityController(){
public void acceptEvent(int keycode, boolean newState, Entity owner, ArrayList<Entity> entities) { public void acceptEvent(int keycode, boolean newState, Entity owner, ArrayList<Entity> entities, ArrayList<Rectangle> collisions) {
if(newState){ if(newState){
@ -51,6 +51,31 @@ public class EntityPlayer extends Entity{
holding = null; holding = null;
} }
break;
case Keys.Z: //Drop the beat
if(holding != null){
Rectangle boxCollision = new Rectangle(holding.collision);
boxCollision.x += getDirectionalVector().x * 16;
boxCollision.y += getDirectionalVector().y * 16;
boolean collides = false;
for(Rectangle r: collisions){
if(r.overlaps(boxCollision)){
//can't place it here
collides = true;
break;
}
}
if(!collides){
holding.shouldDrawSelf = true;
holding.position.mulAdd(getDirectionalVector(), 16);
holding = null;
}
}
} }
if(keycode == Keys.UP || keycode == Keys.DOWN || keycode == Keys.LEFT || keycode == Keys.RIGHT){ if(keycode == Keys.UP || keycode == Keys.DOWN || keycode == Keys.LEFT || keycode == Keys.RIGHT){
lastDirectionalUsed = keycode; lastDirectionalUsed = keycode;

@ -1,21 +1,29 @@
package com.toasted.chuck; package com.toasted.chuck;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType; import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.math.Vector2;
public class Graphics { public class Graphics {
private SpriteBatch spriteBatch; private SpriteBatch spriteBatch;
private ShapeRenderer shapeRenderer; private ShapeRenderer shapeRenderer;
OrthographicCamera cam; OrthographicCamera cam;
final FileHandle VERTEX = Gdx.files.internal("Vertex.vert");
final FileHandle FRAGMENT = Gdx.files.internal("Fragment.frag");
ShaderProgram shader = new ShaderProgram(VERTEX, FRAGMENT);
public Graphics(){ public Graphics(){
cam = new OrthographicCamera(); cam = new OrthographicCamera();
spriteBatch = new SpriteBatch(); spriteBatch = new SpriteBatch();
shapeRenderer = new ShapeRenderer(); shapeRenderer = new ShapeRenderer();
cam.setToOrtho(false, 16 * 32, 9 * 32); cam.setToOrtho(false, 16 * 28, 9 * 28);
} }
public int getWidth(){ public int getWidth(){
@ -45,5 +53,19 @@ public class Graphics {
public void prepare(){ public void prepare(){
shapeRenderer.setProjectionMatrix(cam.combined); shapeRenderer.setProjectionMatrix(cam.combined);
spriteBatch.setProjectionMatrix(cam.combined); spriteBatch.setProjectionMatrix(cam.combined);
System.out.println(shader.getLog());
spriteBatch.setShader(shader);
System.out.println(shader.getUniforms());
// for(String s: shader.getUniforms()){
// System.out.println(s);
// }
// System.out.println(shader.getFragmentShaderSource());
// shader.begin();
shader.begin();
// shader.setUniform2fv("u_resolution", new float[]{(float) getWidth(), (float) getHeight()}, 0, 2);
shader.setUniformf("u_screenResolution", new Vector2(getWidth(), getHeight()));
} }
} }

Loading…
Cancel
Save