@Override public void main() { RVec2 textureCoord = (RVec2)getGlobal(DefaultShaderVar.G_TEXTURE_COORD); RVec3 texNormal = new RVec3("texNormal"); RVec3 normal = (RVec3)getGlobal(DefaultShaderVar.G_NORMAL); for(int i=0; i<mTextures.size(); i++) { texNormal.assign(castVec3(texture2D(muTextures[i], textureCoord))); texNormal.assign(texNormal.rgb().multiply(2)); texNormal.assignSubtract(1); texNormal.assign(normalize(texNormal)); if(mTextures.get(i).getInfluence() != 1) texNormal.assignMultiply(mTextures.get(i).getInfluence()); normal.assign(normalize(texNormal.add(normal))); } }
@Override public void main() { mgPosition.assign(maPosition); mgNormal.assign(maNormal); mgTextureCoord.assign(maTextureCoord); if (mUseVertexColors) { RMat4 transfMatrix = (RMat4) getGlobal(SkeletalAnimationShaderVar.G_BONE_TRANSF_MATRIX); GL_POSITION.assign(muMVPMatrix.multiply(transfMatrix).multiply(mgPosition)); mvNormal.assign(normalize(muNormalMatrix.multiply(castMat3(transfMatrix)).multiply(mgNormal))); } else { GL_POSITION.assign(muMVPMatrix.multiply(mgPosition)); mvNormal.assign(normalize(muNormalMatrix.multiply(mgNormal))); mvCubeTextureCoord.assign(castVec3(maPosition)); if (mHasSkyTexture) { mvCubeTextureCoord.x().assignMultiply(-1); mvEyeDir.assign(castVec3(muModelViewMatrix.multiply(mgPosition)));
RVec3 lightDir = new RVec3("lightDir" + i); lightDir.assign(normalize(muLightPosition[i].subtract(mvEye.xyz()))); RVec3 spotDir = new RVec3("spotDir" + spotCount); spotDir.assign(normalize(muLightDirection[lightDirCount].multiply(-1.0f))); lightDirCount++; lightDir.assign(multiply(castVec3(lightDir), spotFactor)); lightDir.assign(normalize(muLightDirection[lightDirCount].multiply(-1.0f))); lightDirCount++;
@Override public void main() { mgPosition.assign(maPosition); mgNormal.assign(maNormal); mgTextureCoord.assign(maTextureCoord); if(mUseVertexColors) mvNormal.assign(normalize(muNormalMatrix.multiply(castMat3(transfMatrix)).multiply(mgNormal))); mvNormal.assign(normalize(muNormalMatrix.multiply(mgNormal))); mvCubeTextureCoord.assign(castVec3(maPosition)); if(mHasSkyTexture) { mvCubeTextureCoord.x().assignMultiply(-1); mvEyeDir.assign(castVec3(muModelViewMatrix.multiply(mgPosition)));
RVec3 lightDir = new RVec3("lightDir" + i); RFloat nDotL = mgNdotL[i]; nDotL.assign(max(dot(normal, lightDir), 0.1f));
return new RVec2(name); case VEC3: return new RVec3(name); case VEC4: return new RVec4(name);
@Override public void main() { RVec3 diffuse = new RVec3("diffuse"); diffuse.assign(0); RVec3 normal = (RVec3)getGlobal(DefaultShaderVar.G_NORMAL); RFloat power = new RFloat("power"); RVec3 lightColor = (RVec3)getGlobal(LightsShaderVar.U_LIGHT_COLOR, i); RVec3 lightDir = new RVec3("lightDir" + i); diffuse.assignAdd(lightColor.multiply(power)); color.rgb().assign(enclose(diffuse.multiply(color.rgb())).add(ambientColor)); ShaderVar gShadowValue = getGlobal(DefaultShaderVar.G_SHADOW_VALUE); color.rgb().assign(
RVec3 normal = (RVec3) getGlobal(DefaultShaderVar.V_NORMAL); RVec3 reflected = new RVec3("reflected"); reflected.assign(reflect(eyeDir.xyz(), normal)); reflected.z().assignAdd(1.0f); RFloat m = new RFloat("m"); m.assign(inversesqrt(dot(reflected, reflected))); m.assignMultiply(-.5f); cmColor.assign(texture2D(muTextures[sphereMapCount++], reflected.xy().multiply(m).add(castVec2(.5f))));
@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 textureCoord = (RVec2)getGlobal(DefaultShaderVar.G_TEXTURE_COORD); RVec3 texNormal = new RVec3("texNormal"); RVec3 normal = (RVec3)getGlobal(DefaultShaderVar.G_NORMAL); for(int i=0; i<mTextures.size(); i++) { texNormal.assign(castVec3(texture2D(muTextures[i], textureCoord))); texNormal.assign(texNormal.rgb().multiply(2)); texNormal.assignSubtract(1); texNormal.assign(normalize(texNormal)); if(mTextures.get(i).getInfluence() != 1) texNormal.assignMultiply(mTextures.get(i).getInfluence()); normal.assign(normalize(texNormal.add(normal))); } }
@Override public void main() { RVec4 position = (RVec4)getGlobal(DefaultShaderVar.G_POSITION); RVec3 normal = (RVec3)getGlobal(DefaultShaderVar.G_NORMAL); RVec4 aPosition = (RVec4)getGlobal(DefaultShaderVar.A_POSITION); RVec3 aNormal = (RVec3)getGlobal(DefaultShaderVar.A_NORMAL); // // -- position = aPosition + uInterpolation * (aNextFramePosition - aPosition); // position.assign(aPosition.add(muInterpolation.multiply(enclose(maNextFramePosition.subtract(aPosition))))); // // -- normal = aNormal + uInterpolation * (aNextFrameNormal - aNormal); // normal.assign(aNormal.add(muInterpolation.multiply(enclose(maNextFrameNormal.subtract(aNormal))))); }
public void assign(float value) { assign("vec3(" + Float.toString(value) + ")"); }
public void assign(float value1, float value2, float value3) { assign("vec3(" +Float.toString(value1)+ ", " +Float.toString(value2)+ ", " +Float.toString(value3)+ ")"); } }
RVec3 lightDir = new RVec3("lightDir" + i); lightDir.assign(normalize(muLightPosition[i].subtract(mvEye.xyz()))); RVec3 spotDir = new RVec3("spotDir" + spotCount); spotDir.assign(normalize(muLightDirection[lightDirCount].multiply(-1.0f))); lightDirCount++; lightDir.assign(multiply(castVec3(lightDir), spotFactor)); lightDir.assign(normalize(muLightDirection[lightDirCount].multiply(-1.0f))); lightDirCount++;
RVec3 lightDir = new RVec3("lightDir" + i); RFloat nDotL = mgNdotL[i]; nDotL.assign(max(dot(normal, lightDir), 0.1f));
return new RVec2(name); case VEC3: return new RVec3(name); case VEC4: return new RVec4(name);
RVec3 normal = (RVec3) getGlobal(DefaultShaderVar.V_NORMAL); RVec3 reflected = new RVec3("reflected"); reflected.assign(reflect(eyeDir.xyz(), normal)); reflected.assign(normalize(reflected)); reflected.z().assignAdd(1.0f); RFloat m = new RFloat("m"); m.assign(inversesqrt(dot(reflected, reflected))); m.assignMultiply(-.5f); cmColor.assign(texture2D(muTextures[sphereMapCount++], reflected.xy().multiply(m).add(castVec2(.5f)))); RVec3 viewNormal = new RVec3("viewNormal"); viewNormal.assign(castVec3(multiply(inverseV, castVec4(normal, 0)))); reflected.assign(reflect(eyeDir.xyz(), viewNormal)); reflected.assign(castVec3(multiply(inverseV, castVec4(reflected, 0)))); reflected.x().assignMultiply(-1); cmColor.assign(textureCube(muCubeTextures[cubeMapCount++], reflected));