diff options
Diffstat (limited to 'assets/shaders/TwistVert.vert.glsl')
-rw-r--r-- | assets/shaders/TwistVert.vert.glsl | 107 |
1 files changed, 54 insertions, 53 deletions
diff --git a/assets/shaders/TwistVert.vert.glsl b/assets/shaders/TwistVert.vert.glsl index 94d22020..b56e1318 100644 --- a/assets/shaders/TwistVert.vert.glsl +++ b/assets/shaders/TwistVert.vert.glsl | |||
@@ -1,24 +1,25 @@ | |||
1 | /* <copyright> | 1 | /* <copyright> |
2 | Copyright (c) 2012, Motorola Mobility, Inc | 2 | Copyright (c) 2012, Motorola Mobility LLC. |
3 | All Rights Reserved. | 3 | All Rights Reserved. |
4 | BSD License. | ||
5 | 4 | ||
6 | Redistribution and use in source and binary forms, with or without | 5 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met: | 6 | modification, are permitted provided that the following conditions are met: |
8 | 7 | ||
9 | - Redistributions of source code must retain the above copyright notice, | 8 | * Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. | 9 | this list of conditions and the following disclaimer. |
11 | - Redistributions in binary form must reproduce the above copyright | 10 | |
12 | notice, this list of conditions and the following disclaimer in the | 11 | * Redistributions in binary form must reproduce the above copyright notice, |
13 | documentation and/or other materials provided with the distribution. | 12 | this list of conditions and the following disclaimer in the documentation |
14 | - Neither the name of Motorola Mobility nor the names of its contributors | 13 | and/or other materials provided with the distribution. |
15 | may be used to endorse or promote products derived from this software | 14 | |
16 | without specific prior written permission. | 15 | * Neither the name of Motorola Mobility LLC nor the names of its |
16 | contributors may be used to endorse or promote products derived from this | ||
17 | software without specific prior written permission. | ||
17 | 18 | ||
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
@@ -64,51 +65,51 @@ varying vec2 v_texcoord; | |||
64 | 65 | ||
65 | float GetAngle( float t ) | 66 | float GetAngle( float t ) |
66 | { | 67 | { |
67 | float angle= 0.0; | 68 | float angle= 0.0; |
68 | if (t < u_limit2) | 69 | if (t < u_limit2) |
69 | { | 70 | { |
70 | if (t < u_limit1) | 71 | if (t < u_limit1) |
71 | { | 72 | { |
72 | angle = u_twistAmount; | 73 | angle = u_twistAmount; |
73 | } | 74 | } |
74 | else | 75 | else |
75 | { | 76 | { |
76 | angle = (t - u_limit2)/(u_limit1 - u_limit2)*u_twistAmount; | 77 | angle = (t - u_limit2)/(u_limit1 - u_limit2)*u_twistAmount; |
77 | } | 78 | } |
78 | } | 79 | } |
79 | 80 | ||
80 | return angle; | 81 | return angle; |
81 | } | 82 | } |
82 | 83 | ||
83 | 84 | ||
84 | void main(void) | 85 | void main(void) |
85 | { | 86 | { |
86 | vec3 pos = vert; | 87 | vec3 pos = vert; |
87 | vec2 uv = texcoord; | 88 | vec2 uv = texcoord; |
88 | v_texcoord = texcoord; | 89 | v_texcoord = texcoord; |
89 | 90 | ||
90 | v_zNormal = 1.0; | 91 | v_zNormal = 1.0; |
91 | if (uv.x < u_limit2) | 92 | if (uv.x < u_limit2) |
92 | { | 93 | { |
93 | float angle = GetAngle( uv.x ); | 94 | float angle = GetAngle( uv.x ); |
94 | float cs = cos(angle), sn = sin(angle); | 95 | float cs = cos(angle), sn = sin(angle); |
95 | 96 | ||
96 | vec3 ctrPt = pos; | 97 | vec3 ctrPt = pos; |
97 | float y = pos.y*cs - pos.z*sn; // + u_center; | 98 | float y = pos.y*cs - pos.z*sn; // + u_center; |
98 | pos.z = pos.y*sn + pos.z*cs; | 99 | pos.z = pos.y*sn + pos.z*cs; |
99 | pos.y = y; | 100 | pos.y = y; |
100 | 101 | ||
101 | // rotate the normal | 102 | // rotate the normal |
102 | mat3 rotMat = mat3( vec3( 1.0, 0.0, 0.0 ), vec3( 0.0, cs, sn ), vec3( 0.0, -sn, cs ) ); | 103 | mat3 rotMat = mat3( vec3( 1.0, 0.0, 0.0 ), vec3( 0.0, cs, sn ), vec3( 0.0, -sn, cs ) ); |
103 | vec3 pt0 = ctrPt, pt1 = vec3(ctrPt.x, ctrPt.y+1.0, ctrPt.z), pt2 = vec3( ctrPt.x+1.0, ctrPt.y, ctrPt.z); | 104 | vec3 pt0 = ctrPt, pt1 = vec3(ctrPt.x, ctrPt.y+1.0, ctrPt.z), pt2 = vec3( ctrPt.x+1.0, ctrPt.y, ctrPt.z); |
104 | pt0 = rotMat * pt0; pt1 = rotMat * pt1; | 105 | pt0 = rotMat * pt0; pt1 = rotMat * pt1; |
105 | angle = GetAngle(1.0); | 106 | angle = GetAngle(1.0); |
106 | cs = cos(angle); sn = sin(angle); | 107 | cs = cos(angle); sn = sin(angle); |
107 | rotMat = mat3( vec3( 1.0, 0.0, 0.0 ), vec3( 0.0, cs, sn ), vec3( 0.0, -sn, cs ) ); | 108 | rotMat = mat3( vec3( 1.0, 0.0, 0.0 ), vec3( 0.0, cs, sn ), vec3( 0.0, -sn, cs ) ); |
108 | pt2 = rotMat * pt2; | 109 | pt2 = rotMat * pt2; |
109 | vec4 nrm = vec4( cross(pt1-pt0, pt2-pt0), 1.0 ); | 110 | vec4 nrm = vec4( cross(pt1-pt0, pt2-pt0), 1.0 ); |
110 | v_zNormal = -nrm.z; | 111 | v_zNormal = -nrm.z; |
111 | } | 112 | } |
112 | 113 | ||
113 | gl_Position = u_projMatrix * u_mvMatrix * vec4(pos,1.0) ; | 114 | gl_Position = u_projMatrix * u_mvMatrix * vec4(pos,1.0) ; |
114 | } | 115 | } |