@Override public void main() { mgNormal.assign(normalize(mvNormal)); mgTextureCoord.assign(mvTextureCoord); mgColor.assign(muColorInfluence.multiply(mvColor)); mgShadowValue.assign(0.0f); mgSpecularValue.assign(1.0f); for(int i=0; i<mShaderFragments.size(); i++) { IShaderFragment fragment = mShaderFragments.get(i); fragment.setStringBuilder(mShaderSB); fragment.main(); } GL_FRAG_COLOR.assign(mgColor); }
@Override public void main() { super.main(); RVec4 color = (RVec4)getGlobal(DefaultShaderVar.G_COLOR); RVec2 textureCoord = (RVec2)getGlobal(DefaultShaderVar.G_TEXTURE_COORD); RVec4 texColor = new RVec4("texColor"); for(int i=0; i<mTextures.size(); i++) { ATexture texture = mTextures.get(i); if(texture.offsetEnabled()) textureCoord.assignAdd(getGlobal(DefaultShaderVar.U_OFFSET, i)); if(texture.getWrapType() == WrapType.REPEAT) textureCoord.assignMultiply(getGlobal(DefaultShaderVar.U_REPEAT, i)); if(texture.getTextureType() == TextureType.VIDEO_TEXTURE) texColor.assign(texture2D(muVideoTextures[videoTextureMap.indexOf(i)], textureCoord)); else texColor.assign(texture2D(muTextures[textureMap.indexOf(i)], textureCoord)); texColor.assignMultiply(muInfluence[i]); color.assignAdd(texColor); } }
return new RFloat(name); case VEC2: return new RVec2(name); case VEC3: return new RVec3(name);
@Override public void main() { super.main(); RVec4 color = (RVec4)getGlobal(DefaultShaderVar.G_COLOR); RVec2 textureCoord = (RVec2)getGlobal(DefaultShaderVar.G_TEXTURE_COORD); RVec4 texColor = new RVec4("texColor"); for(int i=0; i<mTextures.size(); i++) { ATexture texture = mTextures.get(i); if(texture.offsetEnabled()) textureCoord.assignAdd(getGlobal(DefaultShaderVar.U_OFFSET, i)); if(texture.getWrapType() == WrapType.REPEAT) textureCoord.assignMultiply(getGlobal(DefaultShaderVar.U_REPEAT, i)); if(texture.getTextureType() == TextureType.VIDEO_TEXTURE) texColor.assign(texture2D(muVideoTextures[i], textureCoord)); else texColor.assign(texture2D(muTextures[i], textureCoord)); texColor.assignMultiply(muInfluence[i]); color.assignAdd(texColor); } }
@Override public void main() { mgNormal.assign(normalize(mvNormal)); mgTextureCoord.assign(mvTextureCoord); mgColor.assign(muColorInfluence.multiply(mvColor)); mgShadowValue.assign(0.0f); mgSpecularValue.assign(1.0f); for(int i=0; i<mShaderFragments.size(); i++) { IShaderFragment fragment = mShaderFragments.get(i); fragment.setStringBuilder(mShaderSB); fragment.main(); } GL_FRAG_COLOR.assign(mgColor); }
@Override public void main() { RVec2 gTextureCoord = (RVec2) getGlobal(DefaultShaderVar.G_TEXTURE_COORD); RFloat tileSizeX = new RFloat("tileSizeX"); tileSizeX.assign(1.f / mNumTiles[0]); RFloat tileSizeY = new RFloat("tileSizeY"); tileSizeY.assign(1.f / mNumTiles[1]); RFloat texSOffset = new RFloat("texSOffset", gTextureCoord.s().multiply(tileSizeX)); RFloat texTOffset = new RFloat("texTOffset", gTextureCoord.t().multiply(tileSizeY)); gTextureCoord.s().assign(mod(muCurrentFrame, muNumTiles.x()).multiply(tileSizeX).add(texSOffset)); gTextureCoord.t().assign(tileSizeY.multiply(floor(muCurrentFrame.divide(muNumTiles.y()))).add(texTOffset)); }
@Override public void main() { RVec2 uv = new RVec2("uv", mvTextureCoord); RVec2 uvAnim = new RVec2("uvAnim", new RVec2("vec2(0.0)")); uvAnim.x().assign(uv.x()); uvAnim.y().assign(uv.y().subtract(0.5f)); uvAnim.y().assignMultiply(one.divide(yScale)); uvAnim.y().assignAdd(0.5f); uv.assignSubtract(muCircleCenter); RFloat angle = new RFloat("angle", atan(uv.y(), uv.x()).multiply(-1)); angle.assignAdd(mcPI);
return new RFloat(name); case VEC2: return new RVec2(name); case VEC3: return new RVec3(name);
@Override public void main() { RVec2 pos = new RVec2("pos"); pos.assign("vec2( vTextureCoord.x - uSobel.x, vTextureCoord.y - uSobel.y )"); horizEdge.assignSubtract(texture2D( uTexture, pos).multiply(1)); pos.assign("vec2( vTextureCoord.x - uSobel.x, vTextureCoord.y )"); horizEdge.assignSubtract(texture2D( uTexture, pos).multiply(2)); pos.assign("vec2( vTextureCoord.x - uSobel.x, vTextureCoord.y + uSobel.y )"); horizEdge.assignSubtract(texture2D( uTexture, pos).multiply(1)); pos.assign("vec2( vTextureCoord.x + uSobel.x, vTextureCoord.y - uSobel.y )"); horizEdge.assignAdd(texture2D( uTexture, pos).multiply(1)); pos.assign("vec2( vTextureCoord.x + uSobel.x, vTextureCoord.y )"); horizEdge.assignAdd(texture2D( uTexture, pos).multiply(2)); pos.assign("vec2( vTextureCoord.x + uSobel.x, vTextureCoord.y + uSobel.y )"); horizEdge.assignAdd(texture2D( uTexture, pos).multiply(1)); pos.assign("vec2( vTextureCoord.x - uSobel.x, vTextureCoord.y - uSobel.y )"); vertEdge.assignSubtract(texture2D( uTexture, pos).multiply(1)); pos.assign("vec2( vTextureCoord.x , vTextureCoord.y - uSobel.y )"); vertEdge.assignSubtract(texture2D( uTexture, pos).multiply(2)); pos.assign("vec2( vTextureCoord.x + uSobel.x, vTextureCoord.y - uSobel.y )"); vertEdge.assignSubtract(texture2D( uTexture, pos).multiply(1)); pos.assign("vec2( vTextureCoord.x - uSobel.x, vTextureCoord.y + uSobel.y )"); vertEdge.assignAdd(texture2D( uTexture, pos).multiply(1)); pos.assign("vec2( vTextureCoord.x , vTextureCoord.y + uSobel.y )"); vertEdge.assignAdd(texture2D( uTexture, pos).multiply(2)); pos.assign("vec2( vTextureCoord.x + uSobel.x, vTextureCoord.y + uSobel.y )"); vertEdge.assignAdd(texture2D( uTexture, pos).multiply(1));
@Override public void main() { RVec2 v = new RVec2("v"); v.assign(0); v.assign(0, 0); v.assignAdd(0); v.assignAdd(v); v.assignSubtract(0); v.assignSubtract(v); v.assignMultiply(0); v.assignMultiply(v); v.s().assign(0); v.s().assign(0x00); v.s().assign("(0+0)"); v.t().assign(0); v.t().assign(0x00); v.t().assign("(0+0)"); v.x().assign(0); v.x().assign(0x00); v.x().assign("(0+0)"); v.y().assign(0); v.y().assign(0x00); v.y().assign("(0+0)"); } };
public void assign(float value1, float value2) { assign("vec2(" +Float.toString(value1)+ ", " +Float.toString(value2)+ ")"); } }
@Override public void main() { RVec2 textureCoord = (RVec2)getGlobal(DefaultShaderVar.G_TEXTURE_COORD); RVec4 decalCol = new RVec4("decalCol"); if(mDecalTexture.offsetEnabled()) textureCoord.assignAdd(muDecalOffset); if(mDecalTexture.getWrapType() == ATexture.WrapType.REPEAT) textureCoord.assignMultiply(muDecalRepeat); decalCol.assign(texture2D(muDecalTexture, textureCoord)); RVec4 color = (RVec4) getGlobal(DefaultShaderVar.G_COLOR); color.assign(mix(color, decalCol, decalCol.a())); } }
@Override public void main() { RVec2 pos = new RVec2("pos"); pos.assign(vTextureCoord); pos.x().assignSubtract(mod(pos.x(), uGrid.x())); pos.y().assignSubtract(mod(pos.y(), uGrid.y())); RVec4 srcColor = new RVec4("srcColor"); srcColor.assign(texture2D(uTexture, pos)); GL_FRAG_COLOR.assign(srcColor); } }
@Override public void assign(float value) { assign("vec2(" + Float.toString(value) + ")"); }
@Override public void main() { RVec2 gTextureCoord = (RVec2) getGlobal(DefaultShaderVar.G_TEXTURE_COORD); RFloat tileSizeX = new RFloat("tileSizeX"); tileSizeX.assign(1.f / mNumTiles[0]); RFloat tileSizeY = new RFloat("tileSizeY"); tileSizeY.assign(1.f / mNumTiles[1]); RFloat texSOffset = new RFloat("texSOffset", gTextureCoord.s().multiply(tileSizeX)); RFloat texTOffset = new RFloat("texTOffset", gTextureCoord.t().multiply(tileSizeY)); gTextureCoord.s().assign(mod(muCurrentFrame, muNumTiles.x()).multiply(tileSizeX).add(texSOffset)); gTextureCoord.t().assign(tileSizeY.multiply(floor(muCurrentFrame.divide(muNumTiles.y()))).add(texTOffset)); }