diff --git a/java/examples/Demos/Graphics/Particles/Particle.pde b/java/examples/Demos/Graphics/Particles/Particle.pde index b0e983072..b205887c8 100644 --- a/java/examples/Demos/Graphics/Particles/Particle.pde +++ b/java/examples/Demos/Graphics/Particles/Particle.pde @@ -11,7 +11,8 @@ class Particle { Particle() { partSize = random(10,60); - part = createShape(QUAD); + part = createShape(); + part.beginShape(QUAD); part.noStroke(); part.texture(sprite); part.normal(0, 0, 1); @@ -19,7 +20,7 @@ class Particle { part.vertex(+partSize/2, -partSize/2, sprite.width, 0); part.vertex(+partSize/2, +partSize/2, sprite.width, sprite.height); part.vertex(-partSize/2, +partSize/2, 0, sprite.height); - part.end(); + part.endShape(); rebirth(width/2,height/2); lifespan = random(255); @@ -52,7 +53,7 @@ class Particle { lifespan = lifespan - 1; velocity.add(gravity); - part.tint(255,lifespan); + part.setTint(color(255,lifespan)); part.translate(velocity.x, velocity.y); } } diff --git a/java/examples/Demos/Graphics/Ribbons/Geometry.pde b/java/examples/Demos/Graphics/Ribbons/Geometry.pde index f86a5bfae..302b0f413 100644 --- a/java/examples/Demos/Graphics/Ribbons/Geometry.pde +++ b/java/examples/Demos/Graphics/Ribbons/Geometry.pde @@ -50,6 +50,7 @@ void createRibbonModel(ArrayList residues, PShape model, ArrayList trj) { if (renderMode == 0) { model = createShape(); + model.beginShape(); model.stroke(ribbonColor); model.noFill(); model.beginContour(); @@ -70,12 +71,13 @@ void createRibbonModel(ArrayList residues, PShape model, ArrayList trj) { model.vertex(posVec.x, posVec.y, posVec.z); } model.endContour(); - model.end(OPEN); + model.endShape(OPEN); } else { // The ribbon construction is fairly inneficient here, since // it could use triangle strips instead to avoid duplicating // shared vertices... - model = createShape(TRIANGLES); + model = createShape(); + model.beginShape(TRIANGLES); model.noStroke(); model.fill(ribbonColor); for (int i = 0; i < vertices.size(); i++) { @@ -84,7 +86,7 @@ void createRibbonModel(ArrayList residues, PShape model, ArrayList trj) { model.normal(-normVec.x, -normVec.y, -normVec.z); model.vertex(posVec.x, posVec.y, posVec.z); } - model.end(); + model.endShape(); } trj.add(model); diff --git a/java/examples/Demos/Graphics/Trefoil/Surface.pde b/java/examples/Demos/Graphics/Trefoil/Surface.pde index d81b7600b..5a6e92b65 100644 --- a/java/examples/Demos/Graphics/Trefoil/Surface.pde +++ b/java/examples/Demos/Graphics/Trefoil/Surface.pde @@ -10,7 +10,8 @@ PShape createTrefoil(float s, int ny, int nx, PImage tex) { PVector n0, n1, n2; float u0, u1, v0, v1; - PShape obj = createShape(TRIANGLES); + PShape obj = createShape(); + obj.beginShape(TRIANGLES); obj.texture(tex); for (int j = 0; j < nx; j++) { @@ -49,7 +50,7 @@ PShape createTrefoil(float s, int ny, int nx, PImage tex) { obj.vertex(s * p1.x, s * p1.y, s * p1.z, u1, v0); } } - obj.end(); + obj.endShape(); return obj; } diff --git a/java/examples/Demos/Graphics/Wiggling/Wiggling.pde b/java/examples/Demos/Graphics/Wiggling/Wiggling.pde index dd19157fb..d8f33d195 100644 --- a/java/examples/Demos/Graphics/Wiggling/Wiggling.pde +++ b/java/examples/Demos/Graphics/Wiggling/Wiggling.pde @@ -47,11 +47,11 @@ public void keyPressed() { } else if (key == ' ') { restoreCube(); } else if (key == '1') { - cube.strokeWeight(1); + cube.setStrokeWeight(1); } else if (key == '2') { - cube.strokeWeight(5); + cube.setStrokeWeight(5); } else if (key == '3') { - cube.strokeWeight(10); + cube.setStrokeWeight(10); } } @@ -61,9 +61,10 @@ void createCube() { PShape face; // Front face - face = createShape(POLYGON); - face.stroke(255, 0, 0); - face.fill(255); + face = createShape(); + face.beginShape(POLYGON); + face.stroke(color(255, 0, 0)); + face.fill(color(255)); face.beginContour(); face.vertex(-cubeSize/2, -cubeSize/2, +cubeSize/2); face.vertex(+cubeSize/2, -cubeSize/2, +cubeSize/2); @@ -79,13 +80,14 @@ void createCube() { face.vertex(x, y, z); } face.endContour(); - face.end(CLOSE); + face.endShape(CLOSE); cube.addChild(face); // Back face - face = createShape(POLYGON); - face.stroke(255, 0, 0); - face.fill(255); + face = createShape(); + face.beginShape(POLYGON); + face.stroke(color(255, 0, 0)); + face.fill(color(255)); face.beginContour(); face.vertex(+cubeSize/2, -cubeSize/2, -cubeSize/2); face.vertex(-cubeSize/2, -cubeSize/2, -cubeSize/2); @@ -101,13 +103,14 @@ void createCube() { face.vertex(x, y, z); } face.endContour(); - face.end(CLOSE); + face.endShape(CLOSE); cube.addChild(face); // Right face - face = createShape(POLYGON); - face.stroke(255, 0, 0); - face.fill(255); + face = createShape(); + face.beginShape(POLYGON); + face.stroke(color(255, 0, 0)); + face.fill(color(255)); face.beginContour(); face.vertex(+cubeSize/2, -cubeSize/2, +cubeSize/2); face.vertex(+cubeSize/2, -cubeSize/2, -cubeSize/2); @@ -123,13 +126,14 @@ void createCube() { face.vertex(x, y, z); } face.endContour(); - face.end(CLOSE); + face.endShape(CLOSE); cube.addChild(face); // Left face - face = createShape(POLYGON); - face.stroke(255, 0, 0); - face.fill(255); + face = createShape(); + face.beginShape(POLYGON); + face.stroke(color(255, 0, 0)); + face.fill(color(255)); face.beginContour(); face.vertex(-cubeSize/2, -cubeSize/2, -cubeSize/2); face.vertex(-cubeSize/2, -cubeSize/2, +cubeSize/2); @@ -145,13 +149,14 @@ void createCube() { face.vertex(x, y, z); } face.endContour(); - face.end(CLOSE); + face.endShape(CLOSE); cube.addChild(face); // Top face - face = createShape(POLYGON); - face.stroke(255, 0, 0); - face.fill(255); + face = createShape(); + face.beginShape(POLYGON); + face.stroke(color(255, 0, 0)); + face.fill(color(255)); face.beginContour(); face.vertex(-cubeSize/2, +cubeSize/2, +cubeSize/2); face.vertex(+cubeSize/2, +cubeSize/2, +cubeSize/2); @@ -167,13 +172,14 @@ void createCube() { face.vertex(x, y, z); } face.endContour(); - face.end(CLOSE); + face.endShape(CLOSE); cube.addChild(face); // Bottom face - face = createShape(POLYGON); - face.stroke(255, 0, 0); - face.fill(255); + face = createShape(); + face.beginShape(POLYGON); + face.stroke(color(255, 0, 0)); + face.fill(color(255)); face.beginContour(); face.vertex(+cubeSize/2, -cubeSize/2, +cubeSize/2); face.vertex(-cubeSize/2, -cubeSize/2, +cubeSize/2); @@ -189,7 +195,7 @@ void createCube() { face.vertex(x, y, z); } face.endContour(); - face.end(CLOSE); + face.endShape(CLOSE); cube.addChild(face); } diff --git a/java/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde b/java/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde index 453289fb2..1e833810b 100644 --- a/java/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde +++ b/java/examples/Demos/Performance/CubicGridRetained/CubicGridRetained.pde @@ -15,7 +15,7 @@ void setup() { noSmooth(); noStroke(); - grid = createShape(PShape.GROUP); + grid = createShape(GROUP); // Build grid using multiple translations for (float i =- depth/2+margin; i <= depth/2-margin; i += boxSize){ @@ -25,7 +25,7 @@ void setup() { // ensures values stay within legal range boxFill = color(abs(i), abs(j), abs(k), 50); PShape cube = createShape(BOX, boxSize, boxSize, boxSize); - cube.fill(boxFill); + cube.setFill(boxFill); cube.translate(k, j, i); grid.addChild(cube); } diff --git a/java/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde b/java/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde index 579e3c19a..52165799c 100644 --- a/java/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde +++ b/java/examples/Demos/Performance/DynamicParticlesRetained/DynamicParticlesRetained.pde @@ -23,7 +23,8 @@ void setup() { sprite = loadImage("sprite.png"); for (int n = 0; n < npartTotal; n++) { - PShape part = createShape(QUAD); + PShape part = createShape(); + part.beginShape(QUAD); part.noStroke(); part.texture(sprite); part.normal(0, 0, 1); @@ -31,7 +32,7 @@ void setup() { part.vertex(+partSize/2, -partSize/2, sprite.width, 0); part.vertex(+partSize/2, +partSize/2, sprite.width, sprite.height); part.vertex(-partSize/2, +partSize/2, 0, sprite.height); - part.end(); + part.endShape(); particles.addChild(part); } @@ -58,7 +59,7 @@ void draw () { if (0 <= lifetimes[n]) { float opacity = 1.0 - float(lifetimes[n]) / partLifetime; - part.tint(255, opacity * 255); + part.setTint(color(255, opacity * 255)); if (lifetimes[n] == 0) { // Re-spawn dead particle @@ -73,7 +74,7 @@ void draw () { velocities[n].y += gravity; } } else { - part.tint(0, 0); + part.setTint(color(0)); } } diff --git a/java/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde b/java/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde index 8b63c6943..6d1e178e1 100644 --- a/java/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde +++ b/java/examples/Demos/Performance/StaticParticlesRetained/StaticParticlesRetained.pde @@ -20,16 +20,17 @@ void setup() { float cy = random(-500, +500); float cz = random(-500, +500); - PShape part = createShape(QUAD); + PShape part = createShape(); + part.beginShape(QUAD); part.noStroke(); - part.tint(255); + part.tint(color(255)); part.texture(sprite); part.normal(0, 0, 1); part.vertex(cx - partSize/2, cy - partSize/2, cz, 0, 0); part.vertex(cx + partSize/2, cy - partSize/2, cz, sprite.width, 0); part.vertex(cx + partSize/2, cy + partSize/2, cz, sprite.width, sprite.height); part.vertex(cx - partSize/2, cy + partSize/2, cz, 0, sprite.height); - part.end(); + part.endShape(); particles.addChild(part); } diff --git a/java/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde b/java/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde index e60421de1..922160ae8 100644 --- a/java/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde +++ b/java/examples/Topics/Create Shapes/BeginEndContour/BeginEndContour.pde @@ -11,8 +11,9 @@ void setup() { smooth(); // Make a shape s = createShape(); - s.fill(0); - s.stroke(255); + s.beginShape(); + s.fill(0xFF000000); + s.stroke(0xFFFFFFFF); s.strokeWeight(2); // Exterior part of shape s.vertex(-100,-100); @@ -29,7 +30,7 @@ void setup() { s.endContour(); // Finishing off shape - s.end(CLOSE); + s.endShape(CLOSE); } void draw() { diff --git a/java/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde b/java/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde index 397cd44d7..ef50142f6 100644 --- a/java/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde +++ b/java/examples/Topics/Create Shapes/GroupPShape/GroupPShape.pde @@ -16,8 +16,9 @@ void setup() { // Make a polygon PShape PShape star = createShape(); + star.beginShape(); star.noFill(); - star.stroke(255); + star.stroke(0xFFFFFFFF); star.vertex(0, -50); star.vertex(14, -20); star.vertex(47, -15); @@ -28,23 +29,23 @@ void setup() { star.vertex(-23, 7); star.vertex(-47, -15); star.vertex(-14, -20); - star.end(CLOSE); + star.endShape(CLOSE); // Make a path PShape PShape path = createShape(); - path = createShape(); + path.beginShape(); path.noFill(); - path.stroke(255); + path.stroke(0xFFFFFFFF); for (float a = -PI; a < 0; a += 0.1) { float r = random(60, 70); path.vertex(r*cos(a), r*sin(a)); } - path.end(); + path.endShape(); // Make a primitive (Rectangle) PShape PShape rectangle = createShape(RECT,-10,-10,20,20); - rectangle.noFill(); - rectangle.stroke(255); + rectangle.setFill(false); + rectangle.setStroke(0xFFFFFFFF); // Add them all to the group group.addChild(star); diff --git a/java/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde b/java/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde index 6034e52bb..ccccb6509 100644 --- a/java/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde +++ b/java/examples/Topics/Create Shapes/ParticleSystemPShape/Particle.pde @@ -19,7 +19,8 @@ class Particle { Particle() { partSize = random(10, 60); // The particle is a textured quad - part = createShape(QUAD); + part = createShape(); + part.beginShape(QUAD); part.noStroke(); part.texture(sprite); part.normal(0, 0, 1); @@ -27,7 +28,7 @@ class Particle { part.vertex(+partSize/2, -partSize/2, sprite.width, 0); part.vertex(+partSize/2, +partSize/2, sprite.width, sprite.height); part.vertex(-partSize/2, +partSize/2, 0, sprite.height); - part.end(); + part.endShape(); // Initialize center vector center = new PVector(); @@ -72,7 +73,7 @@ class Particle { lifespan = lifespan - 1; // Apply gravity velocity.add(gravity); - part.tint(255, lifespan); + part.setTint(color(255, lifespan)); // Move the particle according to its velocity part.translate(velocity.x, velocity.y); // and also update the center diff --git a/java/examples/Topics/Create Shapes/PathPShape/PathPShape.pde b/java/examples/Topics/Create Shapes/PathPShape/PathPShape.pde index 3a4dc874f..30b07a19a 100644 --- a/java/examples/Topics/Create Shapes/PathPShape/PathPShape.pde +++ b/java/examples/Topics/Create Shapes/PathPShape/PathPShape.pde @@ -12,9 +12,10 @@ void setup() { smooth(); // Create the shape path = createShape(); + path.beginShape(); // Set fill and stroke path.noFill(); - path.stroke(255); + path.stroke(color(255)); path.strokeWeight(2); float x = 0; @@ -24,7 +25,7 @@ void setup() { x+= 5; } // The path is complete - path.end(); + path.endShape(); } diff --git a/java/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde b/java/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde index 4a9a337f5..e79e6cf36 100644 --- a/java/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde +++ b/java/examples/Topics/Create Shapes/PolygonPShape/PolygonPShape.pde @@ -13,9 +13,10 @@ void setup() { smooth(); // First create the shape star = createShape(); + star.beginShape(); // You can set fill and stroke - star.fill(102); - star.stroke(255); + star.fill(color(102)); + star.stroke(color(255)); star.strokeWeight(2); // Here, we are hardcoding a series of vertices star.vertex(0, -50); @@ -28,7 +29,7 @@ void setup() { star.vertex(-23, 7); star.vertex(-47, -15); star.vertex(-14, -20); - star.end(CLOSE); + star.endShape(CLOSE); } void draw() { diff --git a/java/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde b/java/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde index 55d130f53..09a09738f 100644 --- a/java/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde +++ b/java/examples/Topics/Create Shapes/PolygonPShapeOOP/Star.pde @@ -14,8 +14,9 @@ class Star { speed = random(0.5, 3); // First create the shape s = createShape(); + s.beginShape(); // You can set fill and stroke - s.fill(255, 204); + s.fill(color(255, 204)); s.noStroke(); // Here, we are hardcoding a series of vertices s.vertex(0, -50); @@ -29,7 +30,7 @@ class Star { s.vertex(-47, -15); s.vertex(-14, -20); // The shape is complete - s.end(CLOSE); + s.endShape(CLOSE); } void move() { diff --git a/java/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde b/java/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde index 03a8570d0..b179e57b9 100644 --- a/java/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde +++ b/java/examples/Topics/Create Shapes/PolygonPShapeOOP2/PolygonPShapeOOP2.pde @@ -15,8 +15,9 @@ void setup() { smooth(); // Make a PShape PShape star = createShape(); + star.beginShape(); star.noStroke(); - star.fill(0,127); + star.fill(color(0,127)); star.vertex(0, -50); star.vertex(14, -20); star.vertex(47, -15); @@ -27,7 +28,7 @@ void setup() { star.vertex(-23, 7); star.vertex(-47, -15); star.vertex(-14, -20); - star.end(CLOSE); + star.endShape(CLOSE); // Make an ArrayList polygons = new ArrayList(); diff --git a/java/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde b/java/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde index 6027f5e49..476dbbb4d 100644 --- a/java/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde +++ b/java/examples/Topics/Create Shapes/PolygonPShapeOOP3/PolygonPShapeOOP3.pde @@ -18,13 +18,14 @@ void setup() { smooth(); shapes[0] = createShape(ELLIPSE,0,0,100,100); - shapes[0].fill(255,127); - shapes[0].noStroke(); + shapes[0].setFill(color(255,127)); + shapes[0].setStroke(false); shapes[1] = createShape(RECT,0,0,100,100); - shapes[1].fill(255,127); - shapes[1].noStroke(); - shapes[2] = createShape(); - shapes[2].fill(0,127); + shapes[1].setFill(color(255,127)); + shapes[1].setStroke(false); + shapes[2] = createShape(); + shapes[2].beginShape(); + shapes[2].fill(color(0,127)); shapes[2].noStroke(); shapes[2].vertex(0, -50); shapes[2].vertex(14, -20); @@ -36,7 +37,7 @@ void setup() { shapes[2].vertex(-23, 7); shapes[2].vertex(-47, -15); shapes[2].vertex(-14, -20); - shapes[2].end(CLOSE); + shapes[2].endShape(CLOSE); // Make an ArrayList polygons = new ArrayList(); diff --git a/java/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde b/java/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde index ee8e9c8c9..9ae00c12a 100644 --- a/java/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde +++ b/java/examples/Topics/Create Shapes/PrimitivePShape/PrimitivePShape.pde @@ -19,9 +19,9 @@ void setup() { void draw() { background(51); // We can dynamically set the stroke and fill of the shape - circle.stroke(255); - circle.strokeWeight(4); - circle.fill(map(mouseX, 0, width, 0, 255)); + circle.setStroke(color(255)); + circle.setStrokeWeight(4); + circle.setFill(color(map(mouseX, 0, width, 0, 255))); // We can use translate to move the PShape translate(mouseX, mouseY); // Drawing the PShape diff --git a/java/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde b/java/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde index bb601dccd..6345d33b9 100644 --- a/java/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde +++ b/java/examples/Topics/Create Shapes/WigglePShape/Wiggler.pde @@ -28,13 +28,14 @@ class Wiggler { // Now make the PShape with those vertices s = createShape(); - s.fill(127); - s.stroke(0); + s.beginShape(); + s.setFill(color(127)); + s.stroke(color(0)); s.strokeWeight(2); for (PVector v : original) { s.vertex(v.x, v.y); } - s.end(CLOSE); + s.endShape(CLOSE); } void wiggle() { diff --git a/java/examples/Topics/Shaders/BlurFilter/data/blur.glsl b/java/examples/Topics/Shaders/BlurFilter/data/blur.glsl index b11a04d64..2d55794e5 100644 --- a/java/examples/Topics/Shaders/BlurFilter/data/blur.glsl +++ b/java/examples/Topics/Shaders/BlurFilter/data/blur.glsl @@ -9,40 +9,32 @@ uniform vec2 texcoordOffset; varying vec4 vertColor; varying vec4 vertTexcoord; -#define KERNEL_SIZE 9 - -// Gaussian kernel -// 1 2 1 -// 2 4 2 -// 1 2 1 -float kernel[KERNEL_SIZE]; - -vec2 offset[KERNEL_SIZE]; - void main(void) { - int i = 0; - vec4 sum = vec4(0.0); - - offset[0] = vec2(-texcoordOffset.s, -texcoordOffset.t); - offset[1] = vec2(0.0, -texcoordOffset.t); - offset[2] = vec2(texcoordOffset.s, -texcoordOffset.t); - - offset[3] = vec2(-texcoordOffset.s, 0.0); - offset[4] = vec2(0.0, 0.0); - offset[5] = vec2(texcoordOffset.s, 0.0); - - offset[6] = vec2(-texcoordOffset.s, texcoordOffset.t); - offset[7] = vec2(0.0, texcoordOffset.t); - offset[8] = vec2(texcoordOffset.s, texcoordOffset.t); - - kernel[0] = 1.0/16.0; kernel[1] = 2.0/16.0; kernel[2] = 1.0/16.0; - kernel[3] = 2.0/16.0; kernel[4] = 4.0/16.0; kernel[5] = 2.0/16.0; - kernel[6] = 1.0/16.0; kernel[7] = 2.0/16.0; kernel[8] = 1.0/16.0; - - for(i = 0; i < KERNEL_SIZE; i++) { - vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]); - sum += tmp * kernel[i]; - } + // Grouping texcoord variables in order to make it work in the GMA 950. See post #13 + // in this thread: + // http://www.idevgames.com/forums/thread-3467.html + vec2 tc0 = vertTexcoord.st + vec2(-texcoordOffset.s, -texcoordOffset.t); + vec2 tc1 = vertTexcoord.st + vec2( 0.0, -texcoordOffset.t); + vec2 tc2 = vertTexcoord.st + vec2(+texcoordOffset.s, -texcoordOffset.t); + vec2 tc3 = vertTexcoord.st + vec2(-texcoordOffset.s, 0.0); + vec2 tc4 = vertTexcoord.st + vec2( 0.0, 0.0); + vec2 tc5 = vertTexcoord.st + vec2(+texcoordOffset.s, 0.0); + vec2 tc6 = vertTexcoord.st + vec2(-texcoordOffset.s, +texcoordOffset.t); + vec2 tc7 = vertTexcoord.st + vec2( 0.0, +texcoordOffset.t); + vec2 tc8 = vertTexcoord.st + vec2(+texcoordOffset.s, +texcoordOffset.t); + + vec4 col0 = texture2D(textureSampler, tc0); + vec4 col1 = texture2D(textureSampler, tc1); + vec4 col2 = texture2D(textureSampler, tc2); + vec4 col3 = texture2D(textureSampler, tc3); + vec4 col4 = texture2D(textureSampler, tc4); + vec4 col5 = texture2D(textureSampler, tc5); + vec4 col6 = texture2D(textureSampler, tc6); + vec4 col7 = texture2D(textureSampler, tc7); + vec4 col8 = texture2D(textureSampler, tc8); + vec4 sum = (1.0 * col0 + 2.0 * col1 + 1.0 * col2 + + 2.0 * col3 + 4.0 * col4 + 2.0 * col4 + + 1.0 * col5 + 2.0 * col6 + 1.0 * col7) / 16.0; gl_FragColor = vec4(sum.rgb, 1.0) * vertColor; }