Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Patch 1 #8

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cubic-in-out.glsl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
float cubicInOut(float t) {
return t < 0.5
? 4.0 * t * t * t
: 0.5 * pow(2.0 * t - 2.0, 3.0) + 1.0;
: 1. - 4.0 * pow(1. - t, 3.0);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would you think instead of

Suggested change
: 1. - 4.0 * pow(1. - t, 3.0);
: 1. - 4.0 * pow(abs(1. - t), 3.0);

or my favorite solution, I think,

float cubicInOut(float t) {
  float tm1 = t - 1.0;
  return t < 0.5
    ? 4.0 * t * t * t
    : 1.0 + 4.0 * tm1 * tm1 * tm1;
}

For the reasons mentioned in #7 (comment), namely that even though people shouldn't plug in t < 0 or t > 1, they certainly will, perhaps won't notice they've done it, and it's at least nice if the returned value isn't formally undefined and platform-dependent (which, in my experience usually gets caught years later when a developer gets a new computer, runs the same code, and suddenly things look all wrong).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for keeping this library up. That makes sense.

I like the tm1 formula with no pows at all better, too. But I like '1-t' instead of 't - 1' because the formulas can stay the same whether it's cubic or quartic, rather than flipping the sign in the final addition. Commits below do it with an explicit if block to avoid an unnecessary subtraction when t < .5.

}

#pragma glslify: export(cubicInOut)
2 changes: 1 addition & 1 deletion quartic-in-out.glsl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
float quarticInOut(float t) {
return t < 0.5
? +8.0 * pow(t, 4.0)
: -8.0 * pow(t - 1.0, 4.0) + 1.0;
: -8.0 * pow(1.0 - t , 4.0) + 1.0;
}

#pragma glslify: export(quarticInOut)