Improved geometry shader performance.

This commit is contained in:
Jonathas Costa
2019-09-25 16:03:34 -04:00
parent a9dc1e8720
commit ab52b812f9
2 changed files with 23 additions and 9 deletions
@@ -39,6 +39,10 @@ Fragment getFragment() {
vec4 textureColor = texture(spriteTexture, texCoord);
if (textureColor.a == 0.f || gs_colorMap.a == 0.f) {
discard;
}
vec4 fullColor = vec4(1.0);
if (hasColorMap) {
@@ -159,16 +159,26 @@ void main() {
}
}
initialPosition = z_normalization(vec4(cameraViewProjectionMatrix *
dvec4(dpos.xyz - scaledRight - scaledUp, dpos.w)));
vs_screenSpaceDepth = initialPosition.w;
secondPosition = z_normalization(vec4(cameraViewProjectionMatrix *
dvec4(dpos.xyz + scaledRight - scaledUp, dpos.w)));
crossCorner = z_normalization(vec4(cameraViewProjectionMatrix *
dvec4(dpos.xyz + scaledUp + scaledRight, dpos.w)));
thirdPosition = z_normalization(vec4(cameraViewProjectionMatrix *
dvec4(dpos.xyz + scaledUp - scaledRight, dpos.w)));
// initialPosition = z_normalization(vec4(cameraViewProjectionMatrix *
// dvec4(dpos.xyz - scaledRight - scaledUp, dpos.w)));
// vs_screenSpaceDepth = initialPosition.w;
// secondPosition = z_normalization(vec4(cameraViewProjectionMatrix *
// dvec4(dpos.xyz + scaledRight - scaledUp, dpos.w)));
// crossCorner = z_normalization(vec4(cameraViewProjectionMatrix *
// dvec4(dpos.xyz + scaledUp + scaledRight, dpos.w)));
// thirdPosition = z_normalization(vec4(cameraViewProjectionMatrix *
// dvec4(dpos.xyz + scaledUp - scaledRight, dpos.w)));
// Saving one matrix multiplication:
dvec4 dposClip = cameraViewProjectionMatrix * dpos;
dvec4 scaledRightClip = cameraViewProjectionMatrix * dvec4(scaledRight, 0.0);
dvec4 scaledUpClip = cameraViewProjectionMatrix * dvec4(scaledUp, 0.0);
initialPosition = z_normalization(vec4(dposClip - scaledRightClip - scaledUpClip));
vs_screenSpaceDepth = initialPosition.w;
secondPosition = z_normalization(vec4(dposClip + scaledRightClip - scaledUpClip));
crossCorner = z_normalization(vec4(dposClip + scaledUpClip + scaledRightClip));
thirdPosition = z_normalization(vec4(dposClip + scaledUpClip - scaledRightClip));
// Build primitive
texCoord = corners[3];