jpaonemines / csci441 Goto Github PK
View Code? Open in Web Editor NEWCSCI441 Library Helper Functions and Classes
License: MIT License
CSCI441 Library Helper Functions and Classes
License: MIT License
Ensure that parent & children classes are open/closed as appropriate
If class is doing internal GPU allocation, VAO/VBO binding, etc then delete copy methods.
Otherwise, determine if shallow copy is appropriate or not.
Add a public method that returns which program stages the shader program contains
GLbitfield CSCI441::ShaderProgram::getProgramStages() const
Create a new namespace CSCI441::MATH namespace (or similar) that contains quaternion types and subsequent math operations.
glfwWindowHint( GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE );
glEnable( GL_DEBUG_OUTPUT );
void debug_callback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* msg, const void* params);
glDebugMessageCallback( debug_callback, nullptr );
glDebugMessageControl( GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, GL_TRUE );
Extend abstract Camera to implement the MD5Camera format.
Store:
Ability to:
There is an existing bug for OBJ models that have negative index references. They are not being mapped to the correct positive vertex.
To improve loading times, map GPU buffer when loading model files
Unable to texture the teapot
The fragment shader contains the following:
// ---------- UNIFORMS ---------- //
layout(std140) uniform MaterialInfo {
vec4 Ka;
vec4 Kd;
vec4 Ks;
float shininess;
} material;
layout(std140) uniform LightInfo {
vec4 position;
vec4 La;
vec4 Ld;
vec4 Ls;
} light;
uniform vec3 cameraPos;
uniform int colorer;
uniform uint MaxNodes;
// ---------- VARYINGS ---------- //
in VectorData {
vec3 modelPosition;
vec3 position;
vec3 normal;
} vectorsIn;
// ---------- IMAGES ---------- //
layout(binding=0, r32ui) uniform uimage2D headPointers;
// ---------- ATOMIC COUNTERS ---------- //
layout(binding=0, offset=0) uniform atomic_uint nextNodeCounter;
// ---------- BUFFERS ---------- //
struct NodeType {
vec4 color;
float depth;
uint next;
};
layout(binding=0, std430) buffer linkedLists {
NodeType nodes[];
};
and the output shows as
[INFO]: >--------------------------------------------------------<
[INFO]: | GL_ACTIVE_UNIFORMS: 15 |
[INFO]: | 0) type: mat4 name: MVP_Matrix loc: 5 |
[INFO]: | 1) type: mat4 name: modelviewMatrix loc: 1 |
[INFO]: | 2) type: int name: colorer loc: 10 |
[INFO]: | 7) type: vec3 name: cameraPos loc: 9 |
[INFO]: | 13) type: unsigned int name: MaxNodes loc: 11 |
[INFO]: | 14) type: uimage2D name: headPointers loc: 0 |
[INFO]: >--------------------------------------------------------<
[INFO]: | GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: 2 |
[INFO]: | 0) LightInfo # Uniforms: 5 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: LightInfo.position |
[INFO]: | uniform index: 3 offset: 0 |
[INFO]: | 1) type: vec4 name: LightInfo.La |
[INFO]: | uniform index: 4 offset: 16 |
[INFO]: | 2) type: vec4 name: LightInfo.Ld |
[INFO]: | uniform index: 5 offset: 32 |
[INFO]: | 3) type: vec4 name: LightInfo.Ls |
[INFO]: | uniform index: 6 offset: 48 |
[INFO]: | 4) type: atomic_uint name: nextNodeCounter |
[INFO]: | uniform index: 12 offset: 0 |
[INFO]: | 1) MaterialInfo # Uniforms: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: MaterialInfo.Ka |
[INFO]: | uniform index: 8 offset: 0 |
[INFO]: | 1) type: vec4 name: MaterialInfo.Kd |
[INFO]: | uniform index: 9 offset: 16 |
[INFO]: | 2) type: vec4 name: MaterialInfo.Ks |
[INFO]: | uniform index: 10 offset: 32 |
[INFO]: | 3) type: float name: MaterialInfo.shininess |
[INFO]: | uniform index: 11 offset: 48 |
[INFO]: | Shader Uniform Block Counts 2/70 |
[INFO]: | Vertex Shader Uniform Blocks: 0/36 |
[INFO]: | Fragment Shader Uniform Blocks: 2/36 |
[INFO]: >--------------------------------------------------------<
[INFO]: | GL_SHADER_STORAGE_BLOCK: 1 |
[INFO]: | 0) name: linkedLists index: 0 binding: 0 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | Shader Storage Block Counts: 1/32 |
[INFO]: | Vertex Shader Storage Blocks: 0/32 |
[INFO]: | Fragment Shader Storage Blocks: 1/32 |
[INFO]: >--------------------------------------------------------<
[INFO]: | GL_ATOMIC_COUNTER_BUFFER: 1 |
[INFO]: | 0) type: mat4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: mat4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: int name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec3 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: vec4 name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: float name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: atomic_uint name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: unsigned int name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | 0) type: uimage2D name: |
[INFO]: | uniform index: -1 atomic index: 0 |
[INFO]: | binding: 0 offset: 0 buffer size: 4 |
[INFO]: | Used in: Frag Shader(s) |
[INFO]: | Atomic Counter Counts: 1/ 8 |
[INFO]: | Vertex Atomic Counters: 0/ 8 |
[INFO]: | Fragment Atomic Counters: 15/ 8 |
[INFO]: \--------------------------------------------------------/
Metal on OS X does not support double precision.
See glium/glium#1908 for related info
Support reading in material *.mtr file to get proper texture maps for shaders being applied
2D Orthographic projection to render overlays on top of scenes
OOP-ify it!
Able to move through sequence of animations and transition between them
Add compiler defined flag to include GLAD or GLEW.
#ifdef CSCI441_USING_GLAD
#include <glad/glad.h>
#else
#include <GL/glew.h>
#endif
Apply this to all files.
Able to test each class, function, etc
Clean up formatting within the file and improve string usage.
Use Bezier patch equations to compute exact surface normals.
For a performance boost, don't scan the file to count the number of vertices, normals, texCoords, faces.
Instead provide parameters to the function. These default to -1.
If vertices is -1, then scan the file and count.
Otherwise, allocate arrays to those initial sizes. If the provided size is greater than the actual encountered, print a message to the screen informing the user they allocated too much memory. If the provided size is too small, print a message to the screen informing the user they didn't allocate enough memory. TBD - resize the array? Or fail?
For some architectures, the spheres do not appear as spheres.
It is either the step size for the vertices or the indices that causes the triangles to jump across the sphere and form a very jagged cube-y looking sphere.
Depends upon #16
Rename Engine class from _setupGLEW
to _setupExtensions
. This will support use of GLAD or GLEW in a more agnostic manner via compiler flags.
Half sphere is an open shape.
Dome is a half sphere with a closed disc bottom.
Choose a standard documenting style and properly document all of the files. Ideally build HTML doc pages from comments.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.