RFloat spotFactor = new RFloat("spotFactor" + spotCount); spotFactor.assign(dot(lightDir, spotDir)); RFloat exponent = new RFloat("exponent"); exponent.assign(subtract(1.0f, cos(radians(muSpotCutoffAngle[spotCount])))); exponent.assign(divide(1.0f, exponent)); RFloat facInv = new RFloat("facInv"); facInv.assign(subtract(1, spotFactor)); exponent.assign(facInv.multiply(exponent)); exponent.assign(subtract(1, exponent)); spotFactor.assign(pow(exponent, multiply(muSpotFalloff[spotCount], divide(1.0f, exponent)))); spotFactor.assign(0);
@Override public void main() { RVec4 color = (RVec4) getGlobal(DefaultShaderVar.G_COLOR); RFloat intensity = new RFloat("intensity"); RVec3 normal = (RVec3)getGlobal(DefaultShaderVar.G_NORMAL); RFloat power = new RFloat("power"); power.assign(0.0f); intensity.assign(0.0f); RVec3 lightDir = new RVec3("lightDir" + i); RFloat nDotL = mgNdotL[i]; nDotL.assign(max(dot(normal, lightDir), 0.1f)); power.assign(lightPower.multiply(nDotL).multiply(attenuation)); intensity.assignAdd(power);
RFloat spotFactor = new RFloat("spotFactor" + spotCount); spotFactor.assign(dot(lightDir, spotDir)); RFloat exponent = new RFloat("exponent"); exponent.assign(subtract(1.0f, cos(radians(muSpotCutoffAngle[spotCount])))); exponent.assign(divide(1.0f, exponent)); RFloat facInv = new RFloat("facInv"); facInv.assign(subtract(1, spotFactor)); exponent.assign(facInv.multiply(exponent)); exponent.assign(subtract(1, exponent)); spotFactor.assign(pow(exponent, multiply(muSpotFalloff[spotCount], divide(1.0f, exponent)))); spotFactor.assign(0);
return new RInt(name); case FLOAT: return new RFloat(name); case VEC2: return new RVec2(name);
@Override public void main() { RVec4 color = (RVec4) getGlobal(DefaultShaderVar.G_COLOR); RFloat intensity = new RFloat("intensity"); RVec3 normal = (RVec3)getGlobal(DefaultShaderVar.G_NORMAL); RFloat power = new RFloat("power"); power.assign(0.0f); intensity.assign(0.0f); RVec3 lightDir = new RVec3("lightDir" + i); RFloat nDotL = mgNdotL[i]; nDotL.assign(max(dot(normal, lightDir), 0.1f)); power.assign(lightPower.multiply(nDotL).multiply(attenuation)); intensity.assignAdd(power);
@Override public void main() { RFloat specular = new RFloat("specular"); RFloat gSpecularValue = (RFloat) getGlobal(DefaultShaderVar.G_SPECULAR_VALUE); specular.assign(0); RFloat lightPower = (RFloat)getGlobal(LightsShaderVar.U_LIGHT_POWER, i); RFloat nDotL = (RFloat)getGlobal(DiffuseShaderVar.L_NDOTL, i); RFloat spec = new RFloat("spec" + i); spec.assign(pow(nDotL, muShininess)); spec.assign(spec.multiply(attenuation).multiply(lightPower)); specular.assignAdd(spec); specular.assignMultiply(muSpecularIntensity.multiply(gSpecularValue)); specMapColor.assignAdd(specColor); color.rgb().assignAdd(specular.multiply(muSpecularColor).multiply(specMapColor.rgb())); color.rgb().assignAdd(specular.multiply(muSpecularColor));
diffuse.assign(0); RVec3 normal = (RVec3)getGlobal(DefaultShaderVar.G_NORMAL); RFloat power = new RFloat("power"); power.assign(0.0f); nDotL.assign(max(dot(normal, lightDir), 0.1f)); power.assign(lightPower.multiply(nDotL).multiply(attenuation)); ShaderVar gShadowValue = getGlobal(DefaultShaderVar.G_SHADOW_VALUE); color.rgb().assign( color.rgb().multiply(enclose(new RFloat("1.0").subtract(gShadowValue))));
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() { // float far=gl_DepthRange.far; // float near=gl_DepthRange.near; // // vec4 eye_space_pos = gl_ModelViewMatrix * /*something*/ // vec4 clip_space_pos = gl_ProjectionMatrix * eye_space_pos; // // float ndc_depth = clip_space_pos.z / clip_space_pos.w; // // float depth = (((far-near) * ndc_depth) + near + far) / 2.0; // gl_FragDepth = depth; RVec4 color = (RVec4) getGlobal(DefaultShaderVar.G_COLOR); RFloat depth = new RFloat("depth"); depth.assign(1.0f); depth.assignSubtract(enclose(GL_FRAG_COORD.z().divide(GL_FRAG_COORD.w())).divide(muFarPlane)); //float z = 1.0 - (gl_FragCoord.z / gl_FragCoord.w) / u_far; //depth.assignSubtract(enclose(GL_FRAG_COORD.z().divide(GL_FRAG_COORD.w()))); //depth.assign(GL_FRAG_COORD.w().divide(far)); color.r().assign(depth); color.g().assign(depth); color.b().assign(depth); //float depth = 1.0 - (gl_FragCoord.z / gl_FragCoord.w) / 9.5; }
@Override public void main() { RVec4 lightDepthCol = new RVec4("lightDepthCol"); lightDepthCol.assign(texture2D(muShadowMapTexture, mvShadowTexCoord.xy())); ShaderVar gShadowValue = getGlobal(DefaultShaderVar.G_SHADOW_VALUE); ShaderVar gSpecularValue = getGlobal(DefaultShaderVar.G_SPECULAR_VALUE); RVec3 gNormal = (RVec3) getGlobal(DefaultShaderVar.G_NORMAL); RFloat shadowLightAngle = new RFloat("shadowLightAngle"); shadowLightAngle.assign(dot(gNormal, muShadowLightDir)); startif( new Condition(lightDepthCol.z(), Operator.LESS_THAN, mvShadowTexCoord.z().subtract(mcShadowBias)), new Condition(Operator.AND, shadowLightAngle, Operator.LESS_THAN_EQUALS, -.15f) ); { gShadowValue.assign(muShadowInfluence); gSpecularValue.assign(0.0f); } endif(); }
@Override public void main() { // -- vFogDensity = 0.0; mvFogDensity.assign(0); // -- if (uFogEnabled == true){ startif(new Condition(muFogEnabled, Operator.EQUALS, true)); { // -- vFogDensity = (gl_Position.z - uFogNear) / (uFogFar - uFogNear); mvFogDensity.assign( enclose(GL_POSITION.z().subtract(muFogNear)).divide( enclose(muFogFar.subtract(muFogNear)) ) ); // -- vFogDensity = clamp(vFogDensity, 0.0, 1.0); mvFogDensity.assign(clamp(mvFogDensity, 0, 1)); } endif(); }
@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))))); }
@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); }
public ShaderVar castMat3(float value) { return castMat3(new RFloat(value)); }
public ShaderVar subtract(float value1, ShaderVar var2) { return subtract(new RFloat(Float.toString(value1)), var2); }
public ShaderVar castMat4(float value) { return castMat4(new RFloat(Float.toString(value))); }
public ShaderVar divide(Float value1, ShaderVar var2) { return divide(new RFloat(Float.toString(value1)), var2); }