Skip to content
Snippets Groups Projects
Commit 3a68f977 authored by Alexander Rose's avatar Alexander Rose
Browse files

shader refactoring: size assignment, matrix-scale, transpose

parent 800dac24
No related branches found
No related tags found
No related merge requests found
#if defined(dSizeType_uniform)
float size = uSize;
#elif defined(dSizeType_attribute)
float size = aSize;
#elif defined(dSizeType_instance)
float size = readFromTexture(tSize, aInstance, uSizeTexDim).r;
#elif defined(dSizeType_group)
float size = readFromTexture(tSize, aGroup, uSizeTexDim).r;
#elif defined(dSizeType_groupInstance)
float size = readFromTexture(tSize, aInstance * float(uGroupCount) + aGroup, uSizeTexDim).r;
#endif
\ No newline at end of file
float intDiv(float a, float b) { return float(int(a) / int(b)); }
float intMod(float a, float b) { return a - b * float(int(a) / int(b)); }
\ No newline at end of file
float intMod(float a, float b) { return a - b * float(int(a) / int(b)); }
#if __VERSION__ != 300
float transpose(const in float m) {
return m;
}
mat2 transpose(const in mat2 m) {
return mat2(
m[0][0], m[1][0],
m[0][1], m[1][1]
);
}
mat3 transpose(const in mat3 m) {
return mat3(
m[0][0], m[1][0], m[2][0],
m[0][1], m[1][1], m[2][1],
m[0][2], m[1][2], m[2][2]
);
}
mat4 transpose(const in mat4 m) {
return mat4(
m[0][0], m[1][0], m[2][0], m[3][0],
m[0][1], m[1][1], m[2][1], m[3][1],
m[0][2], m[1][2], m[2][2], m[3][2],
m[0][3], m[1][3], m[2][3], m[3][3]
);
}
#endif
\ No newline at end of file
#if defined(dSizeType_uniform)
uniform float uSize;
#elif defined(dSizeType_attribute)
attribute float aSize;
#elif defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance)
uniform vec2 uSizeTexDim;
uniform sampler2D tSize;
#endif
\ No newline at end of file
......@@ -21,7 +21,6 @@ attribute float aGroup;
#endif
#pragma glslify: inverse = require(./utils/inverse.glsl)
#pragma glslify: transpose = require(./utils/transpose.glsl)
void main(){
#pragma glslify: import('./chunks/assign-color-varying.glsl')
......
......@@ -9,20 +9,11 @@ precision highp int;
#pragma glslify: import('./chunks/common-vert-params.glsl')
#pragma glslify: import('./chunks/color-vert-params.glsl')
#pragma glslify: import('./chunks/size-vert-params.glsl')
uniform float uPixelRatio;
uniform float uViewportHeight;
#if defined(dSizeType_uniform)
uniform float uSize;
#elif defined(dSizeType_attribute)
attribute float aSize;
#elif defined(dSizeType_instance) || defined(dSizeType_group) || defined(dSizeType_groupInstance)
varying vec4 vSize;
uniform vec2 uSizeTexDim;
uniform sampler2D tSize;
#endif
attribute vec3 aPosition;
attribute mat4 aTransform;
attribute float aInstance;
......@@ -31,18 +22,7 @@ attribute float aGroup;
void main(){
#pragma glslify: import('./chunks/assign-color-varying.glsl')
#pragma glslify: import('./chunks/assign-position.glsl')
#if defined(dSizeType_uniform)
float size = uSize;
#elif defined(dSizeType_attribute)
float size = aSize;
#elif defined(dSizeType_instance)
float size = readFromTexture(tSize, aInstance, uSizeTexDim).r;
#elif defined(dSizeType_group)
float size = readFromTexture(tSize, aGroup, uSizeTexDim).r;
#elif defined(dSizeType_groupInstance)
float size = readFromTexture(tSize, aInstance * float(uGroupCount) + aGroup, uSizeTexDim).r;
#endif
#pragma glslify: import('./chunks/assign-size.glsl')
#ifdef dPointSizeAttenuation
gl_PointSize = size * uPixelRatio * ((uViewportHeight / 2.0) / -mvPosition.z) * 5.0;
......
/**
* Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
float matrixScale(in mat4 m){
vec4 r = m[0];
return sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]);
}
#pragma glslify: export(matrixScale)
\ No newline at end of file
// (c) 2014 Mikola Lysenko. MIT License
// https://github.com/glslify/glsl-transpose
float transpose(const in float m) {
return m;
}
mat2 transpose(const in mat2 m) {
return mat2(m[0][0], m[1][0],
m[0][1], m[1][1]);
}
mat3 transpose(const in mat3 m) {
return mat3(m[0][0], m[1][0], m[2][0],
m[0][1], m[1][1], m[2][1],
m[0][2], m[1][2], m[2][2]);
}
mat4 transpose(const in mat4 m) {
return mat4(m[0][0], m[1][0], m[2][0], m[3][0],
m[0][1], m[1][1], m[2][1], m[3][1],
m[0][2], m[1][2], m[2][2], m[3][2],
m[0][3], m[1][3], m[2][3], m[3][3]);
}
#pragma glslify: export(transpose)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment