| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright (C) 2009-2020, Panagiotis Christopoulos Charitos and contributors.
- // All rights reserved.
- // Code licensed under the BSD License.
- // http://www.anki3d.org/LICENSE
- #pragma anki start vert
- #include <shaders/Common.glsl>
- #include <shaders/glsl_cpp_common/LensFlareSprite.h>
- // The block contains data for all flares
- layout(std140, set = 0, binding = 0) readonly buffer ssbo00
- {
- LensFlareSprite u_sprites[];
- };
- layout(location = 0) out Vec3 out_uv;
- layout(location = 1) flat out Vec4 out_color;
- out gl_PerVertex
- {
- Vec4 gl_Position;
- };
- void main()
- {
- const Vec2 position = UV_TO_NDC(Vec2(gl_VertexID & 1, gl_VertexID >> 1));
- const LensFlareSprite sprite = u_sprites[gl_InstanceID];
- // Write tex coords of the 2D array texture
- out_uv = Vec3((position * 0.5) + 0.5, sprite.m_depthPad3.x);
- const Vec4 posScale = sprite.m_posScale;
- gl_Position = Vec4(position * posScale.zw + posScale.xy, 0.0, 1.0);
- out_color = sprite.m_color;
- }
- #pragma anki end
- #pragma anki start frag
- #include <shaders/Common.glsl>
- layout(set = 0, binding = 1) uniform sampler u_trilinearRepeatSampler;
- layout(set = 0, binding = 2) uniform texture2DArray u_tex;
- layout(location = 0) in Vec3 in_uv;
- layout(location = 1) flat in Vec4 in_color;
- layout(location = 0) out Vec4 out_color;
- void main()
- {
- const Vec4 col = texture(u_tex, u_trilinearRepeatSampler, in_uv);
- out_color = col * in_color;
- }
- #pragma anki end
|