Android Open Source - geoar-app Texture Feature Shader






From Project

Back to project page geoar-app.

License

The source code is released under:

Apache License

If you think the Android project geoar-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2012 52North Initiative for Geospatial Open Source Software GmbH
 *// www. ja v  a2 s .  c om
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.n52.geoar.view.geoar.gl.mode;

public class TextureFeatureShader extends FeatureShader {

  //@formatter:off
  private final static String vertexShader = 
      "uniform mat4 " + UNIFORM_MATRIX_MVP + ";        \n" +   
      "uniform mat4 " + UNIFORM_MATRIX_MV + ";        \n" +  
//      "uniform vec3 " + UNIFORM_VEC3_LIGHTPOS + ";      \n" +   
      
      "attribute vec4 " + ATTRIBUTE_POSITION + ";        \n" +  
      "attribute vec4 " + ATTRIBUTE_COLOR + ";        \n" +  
      "attribute vec4 " + ATTRIBUTE_NORMAL + ";        \n" +   
      "attribute vec2 " + ATTRIBUTE_TEXTURE + ";        \n" +   
      
      /** color varying for fragment shader */
      "varying vec3 vPosition;                \n" +
      "varying vec4 vColor;                  \n" +  
      "varying vec3 vNormal;                  \n" +
      "varying vec2 vTexCoordinate;              \n" + 
      
      "void main()                      \n" +
      "{                                          \n" + 
      
      // TODO position is something we already calculated
      /** transform vertex and normals into model coordinates */
      "   vPosition = vec3(" + UNIFORM_MATRIX_MV + " * " + ATTRIBUTE_POSITION + ");        \n" +
      "  vColor = " + ATTRIBUTE_COLOR + ";                            \n" +
      "  vNormal = normalize(vec3(" + UNIFORM_MATRIX_MV + " * " + ATTRIBUTE_NORMAL + "));          \n" +
      "  vTexCoordinate = " + ATTRIBUTE_TEXTURE + ";                        \n" +
      
      /** set position */
      "   gl_Position = " + UNIFORM_MATRIX_MVP + " * " + ATTRIBUTE_POSITION + ";           \n" + 
      "}                                                   \n";
  
  private final static String fragmentShader = 
      "precision mediump float;            \n" +
      "uniform vec3 " + UNIFORM_VEC3_LIGHTPOS + ";  \n" +
      "uniform sampler2D " + UNIFORM_SAMPLER_TEXTURE + ";  \n" +
      
      /** color varying for fragment shader */
      "varying vec4 vColor;                  \n" +  
      "varying vec3 vPosition;                \n" +
      "varying vec3 vNormal;                  \n" +
      "varying vec2 vTexCoordinate;              \n" + 
      
      "void main()                  \n" +
      "{                        \n" +
      
      /** calculate the distance and the normlized light vector */
      "  float dist = length("+ UNIFORM_VEC3_LIGHTPOS + " - vPosition)/100.0;      \n" + 
      "   vec3 lightVec = normalize(" + UNIFORM_VEC3_LIGHTPOS + " - vPosition);   \n" +
      "   float diffuse = max(dot(vNormal, lightVec), 0.0);             \n" +
      "  diffuse = diffuse * (1.0 / ( 0.25 * dist * dist));           \n" +
      "   diffuse = diffuse + 0.6;                         \n" +
      
//      "  vec3 lightVec = normalize(" + UNIFORM_VEC3_LIGHTPOS + " - vPosition); \n" +
//      "  float lightVec \n" +

      // Removed alpha from lighting
      "   vec4 color = vColor * texture2D(" + UNIFORM_SAMPLER_TEXTURE + ", vTexCoordinate);\n" +
      "   color.rgb = color.rgb * diffuse; \n" +
      "  gl_FragColor = color; \n" +
      "}                        \n";        
  //@formatter:on
  
  private static FeatureShader instance;
  
  public static FeatureShader getInstance() {
    if (instance == null) {
      instance = new FeatureShader(vertexShader, fragmentShader);
    }

    return instance;
  }

  private TextureFeatureShader(String vertexShader, String fragmentShader) {
    /** unused */
    super(vertexShader, fragmentShader);
  }

}




Java Source Code List

.DataSourcesOverlay.java
.VisualizationOverlayItem.java
org.n52.geoar.AboutDialog.java
org.n52.geoar.DataSourceListAdapter.java
org.n52.geoar.GeoARActivity.java
org.n52.geoar.GeoARApplication.java
org.n52.geoar.ar.view.ARFragment.java
org.n52.geoar.ar.view.ARObject.java
org.n52.geoar.ar.view.ARView.java
org.n52.geoar.ar.view.DataSourceVisualizationHandler.java
org.n52.geoar.ar.view.IntroController.java
org.n52.geoar.ar.view.IntroViewer.java
org.n52.geoar.ar.view.gl.ARSurfaceViewRenderer.java
org.n52.geoar.ar.view.gl.ARSurfaceView.java
org.n52.geoar.ar.view.gl.GLESCamera.java
org.n52.geoar.ar.view.gl.MultisampleConfigs.java
org.n52.geoar.ar.view.gl.SurfaceTopology.java
org.n52.geoar.ar.view.overlay.ARCanvasSurfaceView.java
org.n52.geoar.ar.view.overlay.GUIDrawable.java
org.n52.geoar.ar.view.overlay.Radar.java
org.n52.geoar.exception.UnsupportedGeometryType.java
org.n52.geoar.map.view.DataSourceOverlayHandler.java
org.n52.geoar.map.view.GeoARMapView.java
org.n52.geoar.map.view.MapActivityContext.java
org.n52.geoar.map.view.MapFragment.java
org.n52.geoar.map.view.overlay.DataSourceOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePointOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolygonOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolylineOverlay.java
org.n52.geoar.map.view.overlay.DataSourcesOverlay.java
org.n52.geoar.map.view.overlay.OverlayType.java
org.n52.geoar.map.view.overlay.PointOverlayType.java
org.n52.geoar.map.view.overlay.PolygonOverlayType.java
org.n52.geoar.map.view.overlay.PolylineOverlayType.java
org.n52.geoar.newdata.CheckList.java
org.n52.geoar.newdata.DataCache.java
org.n52.geoar.newdata.DataSourceHolder.java
org.n52.geoar.newdata.DataSourceInstanceHolder.java
org.n52.geoar.newdata.DataSourceInstanceSettingsDialogActivity.java
org.n52.geoar.newdata.InstalledPluginHolder.java
org.n52.geoar.newdata.PluginActivityContext.java
org.n52.geoar.newdata.PluginContext.java
org.n52.geoar.newdata.PluginDialogFragment.java
org.n52.geoar.newdata.PluginDownloadHolder.java
org.n52.geoar.newdata.PluginDownloader.java
org.n52.geoar.newdata.PluginFragment.java
org.n52.geoar.newdata.PluginGridAdapter.java
org.n52.geoar.newdata.PluginHolder.java
org.n52.geoar.newdata.PluginLoader.java
org.n52.geoar.newdata.PluginLogger.java
org.n52.geoar.newdata.PluginStateInputStream.java
org.n52.geoar.newdata.Tile.java
org.n52.geoar.settings.DateTimeSettingsViewField.java
org.n52.geoar.settings.DateUtils.java
org.n52.geoar.settings.NumberSettingsViewField.java
org.n52.geoar.settings.SettingsException.java
org.n52.geoar.settings.SettingsHelper.java
org.n52.geoar.settings.SettingsViewField.java
org.n52.geoar.settings.SettingsView.java
org.n52.geoar.settings.SpinnerSettingsViewField.java
org.n52.geoar.settings.StringSettingsViewField.java
org.n52.geoar.tracking.camera.CameraView.java
org.n52.geoar.tracking.camera.RealityCamera.java
org.n52.geoar.tracking.location.AdaptiveLowPassSensorBuffer.java
org.n52.geoar.tracking.location.LocationHandler.java
org.n52.geoar.tracking.location.LowPassSensorBuffer.java
org.n52.geoar.tracking.location.MeanSensorBuffer.java
org.n52.geoar.tracking.location.SensorBuffer.java
org.n52.geoar.view.InfoView.java
org.n52.geoar.view.geoar.CalibrationControlView.java
org.n52.geoar.view.geoar.Settings.java
org.n52.geoar.view.geoar.gl.mode.BilligerColorShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerLightShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerTextureShader.java
org.n52.geoar.view.geoar.gl.mode.BoundingBox.java
org.n52.geoar.view.geoar.gl.mode.FeatureShader.java
org.n52.geoar.view.geoar.gl.mode.PhongFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.RenderFeature2.java
org.n52.geoar.view.geoar.gl.mode.Spatial.java
org.n52.geoar.view.geoar.gl.mode.TextureFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.Texture.java
org.n52.geoar.view.geoar.gl.mode.features.CubeFeature2.java
org.n52.geoar.view.geoar.gl.mode.features.FlatCircleFeature.java
org.n52.geoar.view.geoar.gl.mode.features.HeightMapFeature.java
org.n52.geoar.view.geoar.gl.mode.features.NewGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.ReferencedGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.SphereFeature.java
org.n52.geoar.view.geoar.gl.mode.features.TriangleFeature.java