| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <!--
- Copyright (C) 2009-2018, Panagiotis Christopoulos Charitos and contributors.
- All rights reserved.
- Code licensed under the BSD License.
- http://www.anki3d.org/LICENSE
- -->
- <shaderProgram>
- <descriptorSet index="1"/>
- <mutators>
- <mutator name="ANIMATED_TEXTURE" values="0 1"/>
- <mutator name="LIGHT" values="0 1"/>
- </mutators>
- <shaders>
- <shader type="vert">
- <inputs>
- <input name="mvp" type="mat4"/>
- <input name="cameraRotMat" type="mat3"/>
- </inputs>
- <source><![CDATA[
- #include "shaders/ForwardShadingCommonVert.glsl"
- layout(location = SCALE_LOCATION) in float in_scale;
- layout(location = ALPHA_LOCATION) in float in_alpha;
- layout(location = 0) flat out float out_alpha;
- layout(location = 1) out vec2 out_uv;
- layout(location = 2) out vec3 out_worldPos;
- void main()
- {
- out_uv = vec2(gl_VertexID & 1, gl_VertexID >> 1);
- out_worldPos = cameraRotMat * vec3((out_uv - 0.5) * in_scale, 0.0) + in_position;
- gl_Position = mvp * vec4(out_worldPos, 1.0);
- out_alpha = in_alpha;
- }
- ]]>
- </source>
- </shader>
- <shader type="frag">
- <inputs>
- <input name="diffuseMap" type="sampler2D">
- <mutators>
- <mutator name="ANIMATED_TEXTURE" values="0"/>
- </mutators>
- </input>
- <input name="diffuseMapArr" type="sampler2DArray">
- <mutators>
- <mutator name="ANIMATED_TEXTURE" values="1"/>
- </mutators>
- </input>
- <input name="animationPeriod" type="float" const="1">
- <mutators>
- <mutator name="ANIMATED_TEXTURE" values="1"/>
- </mutators>
- </input>
- <input name="colorScale" type="vec4" const="1"/>
- <input name="colorBias" type="vec4" const="1"/>
- </inputs>
- <source><![CDATA[
- #include "shaders/ForwardShadingCommonFrag.glsl"
- layout(location = 0) flat in float in_alpha;
- layout(location = 1) in vec2 in_uv;
- layout(location = 2) in vec3 in_worldPos;
- void main()
- {
- #if ANIMATED_TEXTURE == 1
- vec4 texCol = readAnimatedTextureRgba(diffuseMapArr, animationPeriod, in_uv, anki_u_time);
- #else
- vec4 texCol = texture(diffuseMap, in_uv);
- #endif
- #if LIGHT
- texCol.rgb = computeLightColor(texCol.rgb, in_worldPos);
- #endif
-
- vec4 colScale = colorScale;
- colScale.a *= in_alpha;
- particleAlpha(texCol, colScale, colorBias);
- }
- ]]>
- </source>
- </shader>
- </shaders>
- </shaderProgram>
|