mirror of
https://github.com/3b1b/manim.git
synced 2025-11-13 18:57:49 +00:00
Replace get_gl_Position -> emit_gl_Position
This commit is contained in:
parent
215c21babf
commit
e950286fa4
11 changed files with 49 additions and 23 deletions
|
|
@ -10,10 +10,10 @@ out vec2 v_im_coords;
|
||||||
out float v_opacity;
|
out float v_opacity;
|
||||||
|
|
||||||
// Analog of import for manim only
|
// Analog of import for manim only
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
v_im_coords = im_coords;
|
v_im_coords = im_coords;
|
||||||
v_opacity = opacity;
|
v_opacity = opacity;
|
||||||
gl_Position = get_gl_Position(point);
|
emit_gl_Position(point);
|
||||||
}
|
}
|
||||||
23
manimlib/shaders/inserts/emit_gl_Position.glsl
Normal file
23
manimlib/shaders/inserts/emit_gl_Position.glsl
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
uniform float is_fixed_in_frame;
|
||||||
|
uniform mat4 view;
|
||||||
|
uniform float focal_distance;
|
||||||
|
|
||||||
|
const float DEFAULT_FRAME_HEIGHT = 8.0;
|
||||||
|
const float ASPECT_RATIO = 16.0 / 9.0;
|
||||||
|
const float X_SCALE = 2.0 / DEFAULT_FRAME_HEIGHT / ASPECT_RATIO;
|
||||||
|
const float Y_SCALE = 2.0 / DEFAULT_FRAME_HEIGHT;
|
||||||
|
|
||||||
|
void emit_gl_Position(vec3 point){
|
||||||
|
vec4 result = vec4(point, 1.0);
|
||||||
|
if(!bool(is_fixed_in_frame)){
|
||||||
|
result = view * result;
|
||||||
|
}
|
||||||
|
// Essentially a projection matrix
|
||||||
|
result.x *= X_SCALE;
|
||||||
|
result.y *= Y_SCALE;
|
||||||
|
result.z /= focal_distance;
|
||||||
|
result.w = 1.0 - result.z;
|
||||||
|
// Flip and scale to prevent premature clipping
|
||||||
|
result.z *= -0.1;
|
||||||
|
gl_Position = result;
|
||||||
|
}
|
||||||
|
|
@ -3,18 +3,21 @@ uniform mat4 view;
|
||||||
uniform float focal_distance;
|
uniform float focal_distance;
|
||||||
|
|
||||||
const float DEFAULT_FRAME_HEIGHT = 8.0;
|
const float DEFAULT_FRAME_HEIGHT = 8.0;
|
||||||
const float DEFAULT_FRAME_WIDTH = DEFAULT_FRAME_HEIGHT * 16.0 / 9.0;
|
const float ASPECT_RATIO = 16.0 / 9.0;
|
||||||
|
const float X_SCALE = 2.0 / DEFAULT_FRAME_HEIGHT / ASPECT_RATIO;
|
||||||
|
const float Y_SCALE = 2.0 / DEFAULT_FRAME_HEIGHT;
|
||||||
|
|
||||||
vec4 get_gl_Position(vec3 point){
|
void emit_gl_Position(vec3 point){
|
||||||
vec4 result = vec4(point, 1.0);
|
vec4 result = vec4(point, 1.0);
|
||||||
if(!bool(is_fixed_in_frame)){
|
if(!bool(is_fixed_in_frame)){
|
||||||
result = view * result;
|
result = view * result;
|
||||||
}
|
}
|
||||||
result.x *= 2.0 / DEFAULT_FRAME_WIDTH;
|
// Essentially a projection matrix
|
||||||
result.y *= 2.0 / DEFAULT_FRAME_HEIGHT;
|
result.x *= X_SCALE;
|
||||||
|
result.y *= Y_SCALE;
|
||||||
result.z /= focal_distance;
|
result.z /= focal_distance;
|
||||||
result.w = 1.0 - result.z;
|
result.w = 1.0 - result.z;
|
||||||
// Flip and scale to prevent premature clipping
|
// Flip and scale to prevent premature clipping
|
||||||
result.z *= -0.1;
|
result.z *= -0.1;
|
||||||
return result;
|
gl_Position = result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ out vec3 xyz_coords;
|
||||||
uniform float scale_factor;
|
uniform float scale_factor;
|
||||||
uniform vec3 offset;
|
uniform vec3 offset;
|
||||||
|
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
xyz_coords = (point - offset) / scale_factor;
|
xyz_coords = (point - offset) / scale_factor;
|
||||||
gl_Position = get_gl_Position(point);
|
emit_gl_Position(point);
|
||||||
}
|
}
|
||||||
|
|
@ -6,9 +6,9 @@ out vec3 xyz_coords;
|
||||||
uniform float scale_factor;
|
uniform float scale_factor;
|
||||||
uniform vec3 offset;
|
uniform vec3 offset;
|
||||||
|
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
xyz_coords = (point - offset) / scale_factor;
|
xyz_coords = (point - offset) / scale_factor;
|
||||||
gl_Position = get_gl_Position(point);
|
emit_gl_Position(point);
|
||||||
}
|
}
|
||||||
|
|
@ -27,7 +27,7 @@ const vec2 SIMPLE_QUADRATIC[3] = vec2[3](
|
||||||
);
|
);
|
||||||
|
|
||||||
// Analog of import for manim only
|
// Analog of import for manim only
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
|
|
||||||
|
|
||||||
void emit_triangle(vec3 points[3], vec4 v_color[3]){
|
void emit_triangle(vec3 points[3], vec4 v_color[3]){
|
||||||
|
|
@ -41,7 +41,7 @@ void emit_triangle(vec3 points[3], vec4 v_color[3]){
|
||||||
uv_coords = SIMPLE_QUADRATIC[i];
|
uv_coords = SIMPLE_QUADRATIC[i];
|
||||||
color = v_color[i];
|
color = v_color[i];
|
||||||
point = points[i];
|
point = points[i];
|
||||||
gl_Position = get_gl_Position(points[i]);
|
emit_gl_Position(points[i]);
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
}
|
}
|
||||||
EndPrimitive();
|
EndPrimitive();
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ const float COS_THRESHOLD = 0.99;
|
||||||
|
|
||||||
vec3 unit_normal = vec3(0.0, 0.0, 1.0);
|
vec3 unit_normal = vec3(0.0, 0.0, 1.0);
|
||||||
|
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
#INSERT get_xyz_to_uv.glsl
|
#INSERT get_xyz_to_uv.glsl
|
||||||
#INSERT finalize_color.glsl
|
#INSERT finalize_color.glsl
|
||||||
|
|
||||||
|
|
@ -207,7 +207,7 @@ void main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
color = finalize_color(v_color[i / 2], corners[i], unit_normal);
|
color = finalize_color(v_color[i / 2], corners[i], unit_normal);
|
||||||
gl_Position = get_gl_Position(corners[i]);
|
emit_gl_Position(corners[i]);
|
||||||
EmitVertex();
|
EmitVertex();
|
||||||
}
|
}
|
||||||
EndPrimitive();
|
EndPrimitive();
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
in vec3 point;
|
in vec3 point;
|
||||||
|
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
gl_Position = get_gl_Position(point);
|
emit_gl_Position(point);
|
||||||
}
|
}
|
||||||
|
|
@ -9,12 +9,12 @@ in vec4 rgba;
|
||||||
|
|
||||||
out vec4 v_color;
|
out vec4 v_color;
|
||||||
|
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
#INSERT get_unit_normal.glsl
|
#INSERT get_unit_normal.glsl
|
||||||
#INSERT finalize_color.glsl
|
#INSERT finalize_color.glsl
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
gl_Position = get_gl_Position(point);
|
emit_gl_Position(point);
|
||||||
vec3 normal = get_unit_normal(point, du_point, dv_point);
|
vec3 normal = get_unit_normal(point, du_point, dv_point);
|
||||||
v_color = finalize_color(rgba, point, normal);
|
v_color = finalize_color(rgba, point, normal);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ out vec3 v_normal;
|
||||||
out vec2 v_im_coords;
|
out vec2 v_im_coords;
|
||||||
out float v_opacity;
|
out float v_opacity;
|
||||||
|
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
#INSERT get_unit_normal.glsl
|
#INSERT get_unit_normal.glsl
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
|
|
@ -19,5 +19,5 @@ void main(){
|
||||||
v_normal = get_unit_normal(point, du_point, dv_point);
|
v_normal = get_unit_normal(point, du_point, dv_point);
|
||||||
v_im_coords = im_coords;
|
v_im_coords = im_coords;
|
||||||
v_opacity = opacity;
|
v_opacity = opacity;
|
||||||
gl_Position = get_gl_Position(point);
|
emit_gl_Position(point);
|
||||||
}
|
}
|
||||||
|
|
@ -12,14 +12,14 @@ out float scaled_aaw;
|
||||||
out vec3 v_point;
|
out vec3 v_point;
|
||||||
out vec3 light_pos;
|
out vec3 light_pos;
|
||||||
|
|
||||||
#INSERT get_gl_Position.glsl
|
#INSERT emit_gl_Position.glsl
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
v_point = point;
|
v_point = point;
|
||||||
color = rgba;
|
color = rgba;
|
||||||
scaled_aaw = (anti_alias_width * pixel_size) / radius;
|
scaled_aaw = (anti_alias_width * pixel_size) / radius;
|
||||||
|
|
||||||
gl_Position = get_gl_Position(point);
|
emit_gl_Position(point);
|
||||||
float z = -10 * gl_Position.z;
|
float z = -10 * gl_Position.z;
|
||||||
float scaled_radius = radius * 1.0 / (1.0 - z);
|
float scaled_radius = radius * 1.0 / (1.0 - z);
|
||||||
gl_PointSize = 2 * ((scaled_radius / pixel_size) + anti_alias_width);
|
gl_PointSize = 2 * ((scaled_radius / pixel_size) + anti_alias_width);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue