aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert
diff options
context:
space:
mode:
authorGravatar ziadb <ziadb@google.com>2018-07-02 11:12:27 -0400
committerGravatar Ziad Ben Hadj-Alouane <ziadb@google.com>2018-07-12 14:52:22 +0000
commitbb5b7588d67aa3ed24f1b44ded654215e1818b2f (patch)
tree28c8942666a21d5ee8897575a933a53eb913486a /platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert
parentfe76395c4ddc1c50af8df4e7e393b479b76b52a9 (diff)
Java-only version of SkAR: drawing on android Canvas
Bug: skia: Change-Id: I3b85fac93a2854d1575f71554e2a7da66e8a6a6f Reviewed-on: https://skia-review.googlesource.com/138920 Reviewed-by: Mike Reed <reed@google.com>
Diffstat (limited to 'platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert')
-rw-r--r--platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert40
1 files changed, 40 insertions, 0 deletions
diff --git a/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert b/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert
new file mode 100644
index 0000000000..9ac5a6db27
--- /dev/null
+++ b/platform_tools/android/apps/skar_java/src/main/assets/shaders/plane.vert
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2017 Google Inc. All Rights Reserved.
+ * 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.
+ */
+
+uniform mat4 u_Model;
+uniform mat4 u_ModelViewProjection;
+uniform mat2 u_PlaneUvMatrix;
+uniform vec3 u_Normal;
+
+attribute vec3 a_XZPositionAlpha; // (x, z, alpha)
+
+varying vec3 v_TexCoordAlpha;
+
+void main() {
+ vec4 local_pos = vec4(a_XZPositionAlpha.x, 0.0, a_XZPositionAlpha.y, 1.0);
+ vec4 world_pos = u_Model * local_pos;
+
+ // Construct two vectors that are orthogonal to the normal.
+ // This arbitrary choice is not co-linear with either horizontal
+ // or vertical plane normals.
+ const vec3 arbitrary = vec3(1.0, 1.0, 0.0);
+ vec3 vec_u = normalize(cross(u_Normal, arbitrary));
+ vec3 vec_v = normalize(cross(u_Normal, vec_u));
+
+ // Project vertices in world frame onto vec_u and vec_v.
+ vec2 uv = vec2(dot(world_pos.xyz, vec_u), dot(world_pos.xyz, vec_v));
+ v_TexCoordAlpha = vec3(u_PlaneUvMatrix * uv, a_XZPositionAlpha.z);
+ gl_Position = u_ModelViewProjection * local_pos;
+}