cleaned up particlefire example

really dug into example to learn and just _leaving the example better then I found it_ but cleaning up some unused values and swizzle redudency in shaders. Tested on desktop and android
This commit is contained in:
sjfricke 2018-05-06 23:27:41 -05:00
parent 6e28986d5d
commit 7e15234145
7 changed files with 15 additions and 21 deletions

View file

@ -11,8 +11,8 @@ layout (binding = 2) uniform sampler2D sNormalHeightMap;
layout (location = 0) in vec2 inUV;
layout (location = 1) in vec3 inLightVec;
layout (location = 2) in vec3 inLightVecB;
layout (location = 5) in vec3 inLightDir;
layout (location = 6) in vec3 inViewVec;
layout (location = 3) in vec3 inLightDir;
layout (location = 4) in vec3 inViewVec;
layout (location = 0) out vec4 outFragColor;
@ -41,4 +41,4 @@ void main(void)
float specular = pow(max(dot(view, reflectDir), 0.0), 4.0);
outFragColor = vec4((rgb * atten + (diffuse * rgb + 0.5 * specular * specularColor.rgb)) * atten, 1.0);
}
}

View file

@ -15,20 +15,18 @@ layout (binding = 0) uniform UBO
mat4 model;
mat4 normal;
vec4 lightPos;
vec4 cameraPos;
} ubo;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout (location = 0) out vec2 outUV;
layout (location = 1) out vec3 outLightVec;
layout (location = 2) out vec3 outLightVecB;
layout (location = 5) out vec3 outLightDir;
layout (location = 6) out vec3 outViewVec;
layout (location = 3) out vec3 outLightDir;
layout (location = 4) out vec3 outViewVec;
void main(void)
{
@ -42,18 +40,18 @@ void main(void)
tbnMatrix[1] = mat3(ubo.normal) * inBiTangent;
tbnMatrix[2] = mat3(ubo.normal) * inNormal;
outLightVec.xyz = vec3(ubo.lightPos.xyz - vertexPosition.xyz) * tbnMatrix;
outLightVec.xyz = vec3(ubo.lightPos.xyz - vertexPosition) * tbnMatrix;
vec3 lightDist = ubo.lightPos.xyz - inPos.xyz;
outLightVecB.x = dot(inTangent.xyz, lightDist);
outLightVecB.y = dot(inBiTangent.xyz, lightDist);
vec3 lightDist = ubo.lightPos.xyz - inPos;
outLightVecB.x = dot(inTangent, lightDist);
outLightVecB.y = dot(inBiTangent, lightDist);
outLightVecB.z = dot(inNormal, lightDist);
outViewVec.x = dot(inTangent, inPos.xyz);
outViewVec.y = dot(inBiTangent, inPos.xyz);
outViewVec.z = dot(inNormal, inPos.xyz);
outViewVec.x = dot(inTangent, inPos);
outViewVec.y = dot(inBiTangent, inPos);
outViewVec.z = dot(inNormal, inPos);
outUV = inUV;
gl_Position = ubo.projection * ubo.model * vec4(inPos, 1.0);
}
}

View file

@ -11,7 +11,6 @@ layout (location = 1) in float inAlpha;
layout (location = 2) in flat int inType;
layout (location = 3) in float inRotation;
layout (location = 0) out vec4 outFragColor;
void main ()
@ -43,4 +42,4 @@ void main ()
}
outFragColor.rgb = color.rgb * inColor.rgb * alpha;
}
}

View file

@ -44,6 +44,5 @@ void main ()
// Scale particle size depending on camera projection
vec4 eyePos = ubo.modelview * vec4(inPos.xyz, 1.0);
vec4 projectedCorner = ubo.projection * vec4(0.5 * spriteSize, 0.5 * spriteSize, eyePos.z, eyePos.w);
gl_PointSize = ubo.viewportDim.x * projectedCorner.x / projectedCorner.w;
gl_PointSize = ubo.viewportDim.x * projectedCorner.x / projectedCorner.w;
}

View file

@ -106,7 +106,6 @@ public:
glm::mat4 model;
glm::mat4 normal;
glm::vec4 lightPos = glm::vec4(0.0f, 0.0f, 0.0f, 0.0f);
glm::vec4 cameraPos;
} uboEnv;
struct {
@ -709,7 +708,6 @@ public:
uboEnv.projection = uboVS.projection;
uboEnv.model = uboVS.model;
uboEnv.normal = glm::inverseTranspose(uboEnv.model);
uboEnv.cameraPos = glm::vec4(0.0, 0.0, zoom, 0.0);
memcpy(uniformBuffers.environment.mapped, &uboEnv, sizeof(uboEnv));
}