|
1 | | -#line 2 |
2 | | - |
3 | | -/* |
4 | | - * Copyright (c) 2023 lax1dude. All Rights Reserved. |
5 | | - * |
6 | | - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
7 | | - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 | | - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
9 | | - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
10 | | - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
11 | | - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
12 | | - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
13 | | - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
14 | | - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
15 | | - * POSSIBILITY OF SUCH DAMAGE. |
16 | | - * |
17 | | - */ |
18 | | - |
19 | | -in vec3 a_position3f; |
20 | | - |
21 | | -#ifdef COMPILE_TEXTURE_ATTRIB |
22 | | -in vec2 a_texture2f; |
23 | | -out vec2 v_texture2f; |
24 | | -uniform mat4 u_textureMat4f01; |
25 | | -#endif |
26 | | - |
27 | | -#ifdef COMPILE_COLOR_ATTRIB |
28 | | -in vec4 a_color4f; |
29 | | -out vec4 v_color4f; |
30 | | -#endif |
31 | | - |
32 | | -#ifdef COMPILE_NORMAL_ATTRIB |
33 | | -in vec4 a_normal4f; |
34 | | -out vec3 v_normal3f; |
35 | | -out float v_block1f; |
36 | | -#endif |
37 | | - |
38 | | -#ifdef COMPILE_STATE_WAVING_BLOCKS |
39 | | -uniform mat4 u_modelMatrix4f; |
40 | | -uniform mat4 u_viewMatrix4f; |
41 | | -uniform vec3 u_wavingBlockOffset3f; |
42 | | -uniform vec4 u_wavingBlockParam4f; |
43 | | -#ifndef COMPILE_NORMAL_ATTRIB |
44 | | -uniform float u_blockConstant1f; |
45 | | -#endif |
46 | | -#define DO_COMPILE_STATE_WAVING_BLOCKS |
47 | | -#define FAKE_SIN(valueIn, valueOut)\ |
48 | | - valueOut = abs(1.0 - fract(valueIn * 0.159155) * 2.0);\ |
49 | | - valueOut = valueOut * valueOut * (3.0 - 2.0 * valueOut) * 2.0 - 1.0; |
50 | | -#define LIB_INCLUDE_WAVING_BLOCKS_FUNCTION |
51 | | -#endif |
52 | | - |
53 | | -#EAGLER INCLUDE (2) "eagler:glsl/deferred/lib/waving_blocks.glsl" |
54 | | - |
55 | | -#ifdef COMPILE_NORMAL_MATERIAL_TEXTURE |
56 | | -out vec3 v_viewdir3f; |
57 | | -#endif |
58 | | - |
59 | | -#ifdef COMPILE_LIGHTMAP_ATTRIB |
60 | | -in vec2 a_lightmap2f; |
61 | | -out vec2 v_lightmap2f; |
62 | | -uniform mat4 u_textureMat4f02; |
63 | | -#endif |
64 | | - |
65 | | -uniform mat4 u_modelviewMat4f; |
66 | | -uniform mat4 u_projectionMat4f; |
67 | | - |
68 | | -#define TEX_MAT3(mat4In) mat3(mat4In[0].xyw,mat4In[1].xyw,mat4In[3].xyw) |
69 | | - |
70 | | -void main() { |
71 | | - |
72 | | -#ifdef COMPILE_TEXTURE_ATTRIB |
73 | | - vec3 v_textureTmp3f = TEX_MAT3(u_textureMat4f01) * vec3(a_texture2f, 1.0); |
74 | | - v_texture2f = v_textureTmp3f.xy / v_textureTmp3f.z; |
75 | | -#endif |
76 | | - |
77 | | -#ifdef COMPILE_COLOR_ATTRIB |
78 | | - v_color4f = a_color4f; |
79 | | -#endif |
80 | | - |
81 | | -#ifdef COMPILE_NORMAL_ATTRIB |
82 | | - v_normal3f = normalize(mat3(u_modelviewMat4f) * a_normal4f.xyz); |
83 | | - float blockId = v_block1f = floor((a_normal4f.w + 1.0) * 127.0 + 0.5); |
84 | | -#endif |
85 | | - |
86 | | -#ifdef COMPILE_LIGHTMAP_ATTRIB |
87 | | - vec3 v_lightmapTmp3f = TEX_MAT3(u_textureMat4f02) * vec3(a_lightmap2f, 1.0); |
88 | | - v_lightmap2f = v_lightmapTmp3f.xy / v_lightmapTmp3f.z; |
89 | | -#endif |
90 | | - |
91 | | - vec4 pos = vec4(a_position3f, 1.0); |
92 | | - |
93 | | -#ifdef DO_COMPILE_STATE_WAVING_BLOCKS |
94 | | -#ifndef COMPILE_NORMAL_ATTRIB |
95 | | - float blockId = u_blockConstant1f; |
96 | | -#endif |
97 | | -#ifdef COMPILE_LIGHTMAP_ATTRIB |
98 | | - if(v_lightmap2f.y > 0.33) { |
99 | | - COMPUTE_WAVING_BLOCKS(pos, min(v_lightmap2f.y * 3.0 - 1.0, 1.0), 24.0, blockId, u_modelMatrix4f, u_viewMatrix4f, u_modelviewMat4f, u_wavingBlockOffset3f, u_wavingBlockParam4f) |
100 | | - }else { |
101 | | - pos = u_modelviewMat4f * pos; |
102 | | - } |
103 | | -#else |
104 | | - COMPUTE_WAVING_BLOCKS(pos, 1.0, 32.0, blockId, u_modelMatrix4f, u_viewMatrix4f, u_modelviewMat4f, u_wavingBlockOffset3f, u_wavingBlockParam4f) |
105 | | -#endif |
106 | | -#else |
107 | | - pos = u_modelviewMat4f * pos; |
108 | | -#endif |
109 | | - |
110 | | -#ifdef COMPILE_NORMAL_MATERIAL_TEXTURE |
111 | | - v_viewdir3f = pos.xyz / pos.w; |
112 | | -#endif |
113 | | - |
114 | | - gl_Position = u_projectionMat4f * pos; |
115 | | - |
116 | | -} |
| 1 | +#line 2 |
| 2 | + |
| 3 | +/* |
| 4 | + * Copyright (c) 2023 lax1dude. All Rights Reserved. |
| 5 | + * |
| 6 | + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| 7 | + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| 8 | + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| 9 | + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
| 10 | + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
| 11 | + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| 12 | + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| 13 | + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| 14 | + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| 15 | + * POSSIBILITY OF SUCH DAMAGE. |
| 16 | + * |
| 17 | + */ |
| 18 | + |
| 19 | +in vec3 a_position3f; |
| 20 | + |
| 21 | +#ifdef COMPILE_TEXTURE_ATTRIB |
| 22 | +in vec2 a_texture2f; |
| 23 | +out vec2 v_texture2f; |
| 24 | +uniform mat4 u_textureMat4f01; |
| 25 | +#endif |
| 26 | + |
| 27 | +#ifdef COMPILE_COLOR_ATTRIB |
| 28 | +in vec4 a_color4f; |
| 29 | +out vec4 v_color4f; |
| 30 | +#endif |
| 31 | + |
| 32 | +#ifdef COMPILE_NORMAL_ATTRIB |
| 33 | +in vec4 a_normal4f; |
| 34 | +out vec3 v_normal3f; |
| 35 | +out float v_block1f; |
| 36 | +#endif |
| 37 | + |
| 38 | +#ifdef COMPILE_STATE_WAVING_BLOCKS |
| 39 | +uniform mat4 u_modelMatrix4f; |
| 40 | +uniform mat4 u_viewMatrix4f; |
| 41 | +uniform vec3 u_wavingBlockOffset3f; |
| 42 | +uniform vec4 u_wavingBlockParam4f; |
| 43 | +#ifndef COMPILE_NORMAL_ATTRIB |
| 44 | +uniform float u_blockConstant1f; |
| 45 | +#endif |
| 46 | +#define DO_COMPILE_STATE_WAVING_BLOCKS |
| 47 | +#define FAKE_SIN(valueIn, valueOut)\ |
| 48 | + valueOut = abs(1.0 - fract(valueIn * 0.159155) * 2.0);\ |
| 49 | + valueOut = valueOut * valueOut * (3.0 - 2.0 * valueOut) * 2.0 - 1.0; |
| 50 | +#define LIB_INCLUDE_WAVING_BLOCKS_FUNCTION |
| 51 | +#endif |
| 52 | + |
| 53 | +#EAGLER INCLUDE (2) "eagler:glsl/deferred/lib/waving_blocks.glsl" |
| 54 | + |
| 55 | +#ifdef COMPILE_NORMAL_MATERIAL_TEXTURE |
| 56 | +out vec3 v_viewdir3f; |
| 57 | +#endif |
| 58 | + |
| 59 | +#ifdef COMPILE_LIGHTMAP_ATTRIB |
| 60 | +in vec2 a_lightmap2f; |
| 61 | +out vec2 v_lightmap2f; |
| 62 | +uniform mat4 u_textureMat4f02; |
| 63 | +#endif |
| 64 | + |
| 65 | +uniform mat4 u_modelviewMat4f; |
| 66 | +uniform mat4 u_projectionMat4f; |
| 67 | + |
| 68 | +#define TEX_MAT3(mat4In) mat3(mat4In[0].xyw,mat4In[1].xyw,mat4In[3].xyw) |
| 69 | + |
| 70 | +void main() { |
| 71 | + |
| 72 | +#ifdef COMPILE_TEXTURE_ATTRIB |
| 73 | + vec3 v_textureTmp3f = TEX_MAT3(u_textureMat4f01) * vec3(a_texture2f, 1.0); |
| 74 | + v_texture2f = v_textureTmp3f.xy / v_textureTmp3f.z; |
| 75 | +#endif |
| 76 | + |
| 77 | +#ifdef COMPILE_COLOR_ATTRIB |
| 78 | + v_color4f = a_color4f; |
| 79 | +#endif |
| 80 | + |
| 81 | +#ifdef COMPILE_NORMAL_ATTRIB |
| 82 | + v_normal3f = normalize(mat3(u_modelviewMat4f) * a_normal4f.xyz); |
| 83 | + float blockId = v_block1f = floor((a_normal4f.w + 1.0) * 127.0 + 0.5); |
| 84 | +#endif |
| 85 | + |
| 86 | +#ifdef COMPILE_LIGHTMAP_ATTRIB |
| 87 | + vec3 v_lightmapTmp3f = TEX_MAT3(u_textureMat4f02) * vec3(a_lightmap2f, 1.0); |
| 88 | + v_lightmap2f = v_lightmapTmp3f.xy / v_lightmapTmp3f.z; |
| 89 | +#endif |
| 90 | + |
| 91 | + vec4 pos = vec4(a_position3f, 1.0); |
| 92 | + |
| 93 | +#ifdef DO_COMPILE_STATE_WAVING_BLOCKS |
| 94 | +#ifndef COMPILE_NORMAL_ATTRIB |
| 95 | + float blockId = u_blockConstant1f; |
| 96 | +#endif |
| 97 | +#ifdef COMPILE_LIGHTMAP_ATTRIB |
| 98 | + if(v_lightmap2f.y > 0.33) { |
| 99 | + COMPUTE_WAVING_BLOCKS(pos, min(v_lightmap2f.y * 3.0 - 1.0, 1.0), 24.0, blockId, u_modelMatrix4f, u_viewMatrix4f, u_modelviewMat4f, u_wavingBlockOffset3f, u_wavingBlockParam4f) |
| 100 | + }else { |
| 101 | + pos = u_modelviewMat4f * pos; |
| 102 | + } |
| 103 | +#else |
| 104 | + COMPUTE_WAVING_BLOCKS(pos, 1.0, 32.0, blockId, u_modelMatrix4f, u_viewMatrix4f, u_modelviewMat4f, u_wavingBlockOffset3f, u_wavingBlockParam4f) |
| 105 | +#endif |
| 106 | +#else |
| 107 | + pos = u_modelviewMat4f * pos; |
| 108 | +#endif |
| 109 | + |
| 110 | +#ifdef COMPILE_NORMAL_MATERIAL_TEXTURE |
| 111 | + v_viewdir3f = pos.xyz / pos.w; |
| 112 | +#endif |
| 113 | + |
| 114 | + gl_Position = u_projectionMat4f * pos; |
| 115 | + |
| 116 | +} |
0 commit comments