public HotspotMaterial(boolean useTexture, boolean discardAlpha) { super(new VertexShader(R.raw.minimal_vertex_shader), new HotspotFragmentShader(useTexture, discardAlpha)); mHotspotShader = (HotspotFragmentShader)mCustomFragmentShader; }
addPreprocessorDirective("#ifdef GL_FRAGMENT_PRECISION_HIGH\n\rprecision highp float;\n\r" + "#else\n\rprecision mediump float;\n\r#endif\n\r"); muMVPMatrix = (RMat4) addUniform(DefaultShaderVar.U_MVP_MATRIX); muNormalMatrix = (RMat3) addUniform(DefaultShaderVar.U_NORMAL_MATRIX); muModelMatrix = (RMat4) addUniform(DefaultShaderVar.U_MODEL_MATRIX); muInverseViewMatrix = (RMat4) addUniform(DefaultShaderVar.U_INVERSE_VIEW_MATRIX); muModelViewMatrix = (RMat4) addUniform(DefaultShaderVar.U_MODEL_VIEW_MATRIX); muColor = (RVec4) addUniform(DefaultShaderVar.U_COLOR); if (mTimeEnabled) { addUniform(DefaultShaderVar.U_TIME); maTextureCoord = (RVec2) addAttribute(DefaultShaderVar.A_TEXTURE_COORD); maNormal = (RVec3) addAttribute(DefaultShaderVar.A_NORMAL); maPosition = (RVec4) addAttribute(DefaultShaderVar.A_POSITION); if (mUseVertexColors) { maVertexColor = (RVec4) addAttribute(DefaultShaderVar.A_VERTEX_COLOR); mvTextureCoord = (RVec2) addVarying(DefaultShaderVar.V_TEXTURE_COORD); if (mHasCubeMaps) { mvCubeTextureCoord = (RVec3) addVarying(DefaultShaderVar.V_CUBE_TEXTURE_COORD); mvNormal = (RVec3) addVarying(DefaultShaderVar.V_NORMAL); mvColor = (RVec4) addVarying(DefaultShaderVar.V_COLOR); mvEyeDir = (RVec3) addVarying(DefaultShaderVar.V_EYE_DIR); mgPosition = (RVec4) addGlobal(DefaultShaderVar.G_POSITION); mgNormal = (RVec3) addGlobal(DefaultShaderVar.G_NORMAL); mgColor = (RVec4) addGlobal(DefaultShaderVar.G_COLOR);
/** * Applies parameters that should be set on the shaders. These are parameters * like time, color, buffer handles, etc. */ public void applyParams() { mVertexShader.setColor(mColor); mVertexShader.setTime(mTime); mVertexShader.applyParams(); mFragmentShader.setColorInfluence(mColorInfluence); mFragmentShader.applyParams(); }
public SobelPass(float x, float y) { super(); if(x > 0) gX = x; if(y > 0) gY = y; mVertexShader = new SobelVertexShader(); mVertexShader.initialize(); mVertexShader.buildShader(); mFragmentShader = new SobelFragmentShader(); mFragmentShader.initialize(); mFragmentShader.buildShader(); createMaterial(mVertexShader, mFragmentShader); }
mVertexShader = new VertexShader(); mVertexShader.enableTime(mTimeEnabled); mVertexShader.hasCubeMaps(hasCubeMaps); mVertexShader.hasSkyTexture(skyTextures != null && skyTextures.size() > 0); mVertexShader.useVertexColors(mUseVertexColors); onPreVertexShaderInitialize(mVertexShader); mVertexShader.initialize(); mFragmentShader = new FragmentShader(); mFragmentShader.enableTime(mTimeEnabled); mFragmentShader.initialize(); } else { if (mVertexShader.needsBuild()) mVertexShader.initialize(); if (mFragmentShader.needsBuild()) mFragmentShader.initialize(); mVertexShader.setLights(mLights); mFragmentShader.setLights(mLights); mLightsVertexShaderFragment.setAmbientColor(mAmbientColor); mLightsVertexShaderFragment.setAmbientIntensity(mAmbientIntensity); mVertexShader.addShaderFragment(mLightsVertexShaderFragment); mFragmentShader.addShaderFragment(new LightsFragmentShaderFragment(mLights)); IShaderFragment fragment = mDiffuseMethod.getVertexShaderFragment(); if (fragment != null) mVertexShader.addShaderFragment(fragment); fragment = mDiffuseMethod.getFragmentShaderFragment(); mFragmentShader.addShaderFragment(fragment);
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)));
addPrecisionQualifier(DataType.FLOAT, Precision.MEDIUMP); muMVPMatrix = (RMat4) addUniform(DefaultShaderVar.U_MVP_MATRIX); muNormalMatrix = (RMat3) addUniform(DefaultShaderVar.U_NORMAL_MATRIX); muModelMatrix = (RMat4) addUniform(DefaultShaderVar.U_MODEL_MATRIX); muModelViewMatrix = (RMat4) addUniform(DefaultShaderVar.U_MODEL_VIEW_MATRIX); muColor = (RVec4) addUniform(DefaultShaderVar.U_COLOR); if(mTimeEnabled) addUniform(DefaultShaderVar.U_TIME); maTextureCoord = (RVec2) addAttribute(DefaultShaderVar.A_TEXTURE_COORD); maNormal = (RVec3) addAttribute(DefaultShaderVar.A_NORMAL); maPosition = (RVec4) addAttribute(DefaultShaderVar.A_POSITION); if (mUseVertexColors) maVertexColor = (RVec4) addAttribute(DefaultShaderVar.A_VERTEX_COLOR); mvTextureCoord = (RVec2) addVarying(DefaultShaderVar.V_TEXTURE_COORD); if (mHasCubeMaps) mvCubeTextureCoord = (RVec3) addVarying(DefaultShaderVar.V_CUBE_TEXTURE_COORD); mvNormal = (RVec3) addVarying(DefaultShaderVar.V_NORMAL); mvColor = (RVec4) addVarying(DefaultShaderVar.V_COLOR); mvEyeDir = (RVec3) addVarying(DefaultShaderVar.V_EYE_DIR); mgPosition = (RVec4) addGlobal(DefaultShaderVar.G_POSITION); mgNormal = (RVec3) addGlobal(DefaultShaderVar.G_NORMAL); mgColor = (RVec4) addGlobal(DefaultShaderVar.G_COLOR); mgTextureCoord = (RVec2) addGlobal(DefaultShaderVar.G_TEXTURE_COORD);
protected void createMaterial(int vertexShaderResourceId, int fragmentShaderResourceId) { mVertexShader = new VertexShader(vertexShaderResourceId); mFragmentShader = new FragmentShader(fragmentShaderResourceId); mVertexShader.setNeedsBuild(false); mFragmentShader.setNeedsBuild(false); setMaterial(new Material(mVertexShader, mFragmentShader)); }
@Override public void applyParams() { super.applyParams(); createLightViewProjectionMatrix(mLight).toFloatArray(mLightMatrix); GLES20.glUniformMatrix4fv(muLightMatrixHandle, 1, false, mLightMatrix, 0); }
/** * Checks if any {@link IMaterialPlugin}s have been added. If so they will be added * to the vertex and/or fragment shader. * * @param location Where to insert the vertex and/or fragment shader */ private void checkForPlugins(PluginInsertLocation location) { if (mPlugins == null) return; for (IMaterialPlugin plugin : mPlugins) { if (plugin.getInsertLocation() == location) { mVertexShader.addShaderFragment(plugin.getVertexShaderFragment()); mFragmentShader.addShaderFragment(plugin.getFragmentShaderFragment()); } } }
mVertexShader = new VertexShader(); mVertexShader.enableTime(mTimeEnabled); mVertexShader.hasCubeMaps(hasCubeMaps); mVertexShader.hasSkyTexture(skyTextures != null && skyTextures.size() > 0); mVertexShader.useVertexColors(mUseVertexColors); mVertexShader.initialize(); mFragmentShader = new FragmentShader(); mFragmentShader.enableTime(mTimeEnabled); mVertexShader.setLights(mLights); mFragmentShader.setLights(mLights); mLightsVertexShaderFragment.setAmbientColor(mAmbientColor); mLightsVertexShaderFragment.setAmbientIntensity(mAmbientIntensity); mVertexShader.addShaderFragment(mLightsVertexShaderFragment); mFragmentShader.addShaderFragment(new LightsFragmentShaderFragment(mLights)); IShaderFragment fragment = mDiffuseMethod.getVertexShaderFragment(); if (fragment != null) mVertexShader.addShaderFragment(fragment); fragment = mDiffuseMethod.getFragmentShaderFragment(); mFragmentShader.addShaderFragment(fragment); IShaderFragment fragment = mSpecularMethod.getVertexShaderFragment(); if (fragment != null) mVertexShader.addShaderFragment(fragment); mVertexShader.buildShader(); mFragmentShader.buildShader();
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))); mvNormal.assign(normalize(muNormalMatrix.multiply(mgNormal))); mvCubeTextureCoord.assign(castVec3(maPosition)); if(mHasSkyTexture) { mvCubeTextureCoord.x().assignMultiply(-1); mvEyeDir.assign(castVec3(muModelViewMatrix.multiply(mgPosition)));
public PixelatedPass(float rows, float cols) { super(); if(rows > 0) this.rows = rows; if(cols > 0) this.cols = cols; mVertexShader = new PixelatedVertexShader(); mVertexShader.initialize(); mVertexShader.buildShader(); //Log.d(getClass().getSimpleName(), "=== vertex shader ===\n" + mVertexShader.getShaderString()); mFragmentShader = new PixelatedFragmentShader(); mFragmentShader.initialize(); mFragmentShader.buildShader(); //Log.d(getClass().getSimpleName(), "=== fragment shader ===\n" + mFragmentShader.getShaderString()); createMaterial(mVertexShader, mFragmentShader); }
@Override public void applyParams() { super.applyParams(); GLES20.glUniform1f(rtWHandle, mReadTarget.getWidth()); GLES20.glUniform1f(rtHHandle, mReadTarget.getHeight()); } }
/** * Checks if any {@link IMaterialPlugin}s have been added. If so they will be added * to the vertex and/or fragment shader. * * @param location Where to insert the vertex and/or fragment shader */ private void checkForPlugins(PluginInsertLocation location) { if (mPlugins == null) return; for (IMaterialPlugin plugin : mPlugins) { if (plugin.getInsertLocation() == location) { mVertexShader.addShaderFragment(plugin.getVertexShaderFragment()); mFragmentShader.addShaderFragment(plugin.getFragmentShaderFragment()); } } }
/** * Applies parameters that should be set on the shaders. These are parameters * like time, color, buffer handles, etc. */ public void applyParams() { mVertexShader.setColor(mColor); mVertexShader.setTime(mTime); mVertexShader.applyParams(); mFragmentShader.setColorInfluence(mColorInfluence); mFragmentShader.applyParams(); }
protected void createMaterial(@RawRes int vertexShaderResourceId, @RawRes int fragmentShaderResourceId) { createMaterial(new VertexShader(vertexShaderResourceId), new FragmentShader(fragmentShaderResourceId)); }
@Override public void applyParams() { super.applyParams(); createLightViewProjectionMatrix(mLight).toFloatArray(mLightMatrix); GLES20.glUniformMatrix4fv(muLightMatrixHandle, 1, false, mLightMatrix, 0); }