commit
b2f75901fa
5 changed files with 472 additions and 0 deletions
@ -0,0 +1,26 @@ |
|||||||
|
|
||||||
|
OBJDIR = build
|
||||||
|
SRCDIR = src
|
||||||
|
LIBDIR = ext/tangerine
|
||||||
|
LIB = $(LIBDIR)/build/libTangerine.a
|
||||||
|
CXX = g++
|
||||||
|
CXXFLAGS = -std=c++11 -g -ggdb3 -Wall -I$(LIBDIR)/include/
|
||||||
|
LDFLAGS = -lSDL2 -lGLEW -lGL -lassimp
|
||||||
|
BIN = bin/orbital_shipping
|
||||||
|
|
||||||
|
SOURCES = $(wildcard $(SRCDIR)/*.cpp)
|
||||||
|
OBJECTS = $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(SOURCES))
|
||||||
|
|
||||||
|
|
||||||
|
all: $(OBJECTS) |
||||||
|
$(CXX) -o $(BIN) $(LDFLAGS) $(OBJDIR)/*.o $(LIB)
|
||||||
|
.PHONY: all |
||||||
|
|
||||||
|
-include $(OBJDIR)/*.d |
||||||
|
|
||||||
|
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp |
||||||
|
$(CXX) $(CXXFLAGS) -c -MMD $< -o $@
|
||||||
|
|
||||||
|
clean: |
||||||
|
rm -rf $(OBJDIR)/* $(BIN)
|
||||||
|
.PHONY: clean |
||||||
@ -0,0 +1,120 @@ |
|||||||
|
|
||||||
|
#include <cassert> |
||||||
|
#include <cmath> |
||||||
|
|
||||||
|
#include <SDL2/SDL.h> |
||||||
|
#include <glm/glm.hpp> |
||||||
|
|
||||||
|
#include "dumbLog.h" |
||||||
|
#include "mesh.h" |
||||||
|
#include "renderer.h" |
||||||
|
#include "util.h" |
||||||
|
|
||||||
|
#define ORBIT_IMPLEMENTATION |
||||||
|
#include "orbits.h" |
||||||
|
|
||||||
|
|
||||||
|
static ellipse_3d g_ellipse; |
||||||
|
static uint g_index = 0; |
||||||
|
|
||||||
|
|
||||||
|
simple_mesh* |
||||||
|
constructEllipseMesh(ellipse_3d& e3d, glm::vec3 vertex_color) |
||||||
|
{ |
||||||
|
simple_mesh* sm = meInitMesh(e3d.vert_count); |
||||||
|
|
||||||
|
for (uint i = 0; i < e3d.vert_count; i++) { |
||||||
|
sm->vertices[i] = e3d.vertices[i]; |
||||||
|
sm->vert_colors[i] = vertex_color; |
||||||
|
} |
||||||
|
|
||||||
|
return sm; |
||||||
|
} |
||||||
|
|
||||||
|
simple_mesh* |
||||||
|
constructCircleMesh(float r, uint vert_count, glm::vec3 vertex_color) |
||||||
|
{ |
||||||
|
simple_mesh* sm = meInitMesh(vert_count); |
||||||
|
float angle = (float) M_PI * 2 / vert_count; |
||||||
|
|
||||||
|
for (uint i = 0; i < vert_count; i++) { |
||||||
|
sm->vertices[i] = glm::vec3(cos(i * angle) * r, sin(i * angle) * r, 0); |
||||||
|
sm->vert_colors[i] = vertex_color; |
||||||
|
} |
||||||
|
|
||||||
|
return sm; |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
doFrameCallback(render_state* rs) |
||||||
|
{ |
||||||
|
entity& satellite = rs->render_groups[0].entities[2]; |
||||||
|
|
||||||
|
g_index++; |
||||||
|
if (g_index == g_ellipse.vert_count) g_index = 0; |
||||||
|
static glm::mat4 xform = |
||||||
|
glm::rotate(glm::mat4(1.0), (float) M_PI_2, glm::vec3(1, 0, 0)); |
||||||
|
glm::vec3 v = g_ellipse.vertices[g_index]; |
||||||
|
entSetWorldPosition(satellite, xform * glm::vec4(v.x, v.y, v.z, 1)); |
||||||
|
|
||||||
|
#if 0 |
||||||
|
LOG(Debug) << "SDL_GetTicks(): " << SDL_GetTicks() << "ms\n"; |
||||||
|
#endif |
||||||
|
} |
||||||
|
|
||||||
|
int |
||||||
|
main() |
||||||
|
{ |
||||||
|
render_state* rs = renInit("orbital shipping", |
||||||
|
glm::vec2(1920, 1080), |
||||||
|
SDL_INIT_TIMER); |
||||||
|
|
||||||
|
if (rs == nullptr) { |
||||||
|
LOG(Error) << "Error Initialzing renderer\n"; |
||||||
|
return 1; |
||||||
|
} |
||||||
|
|
||||||
|
cameraInitPerspective( |
||||||
|
rs->cam, |
||||||
|
glm::vec3(0, -100, 0), |
||||||
|
glm::vec3(0, 0, 0), |
||||||
|
glm::vec3(0,0,1) |
||||||
|
); |
||||||
|
|
||||||
|
// TODO: (renderer) this needs to be more convenient
|
||||||
|
shader_wrapper sw = { SIMPLE_SHADER, nullptr, rs->simple_shader }; |
||||||
|
rs->render_groups = renAllocateGroup(3, sw); |
||||||
|
rs->render_group_count = 1; |
||||||
|
|
||||||
|
entity& ellipse_entity = rs->render_groups[0].entities[0]; |
||||||
|
ellipse_parameters ep = constructEllipse(50, 30); |
||||||
|
g_ellipse = constructEllipse3D(ep, 256); |
||||||
|
simple_mesh* sm = constructEllipseMesh(g_ellipse, glm::vec3(255, 0, 255)); |
||||||
|
entInitMesh(ellipse_entity, sm, GL_LINES); |
||||||
|
entRotate(ellipse_entity, (float) M_PI_2, glm::vec3(1, 0, 0)); |
||||||
|
|
||||||
|
entity& planet_entity = rs->render_groups[0].entities[1]; |
||||||
|
sm = constructCircleMesh(3, 24, glm::vec3(255, 255, 0)); |
||||||
|
entInitMesh(planet_entity, sm, GL_LINE_LOOP); |
||||||
|
entRotate(planet_entity, (float) M_PI_2, glm::vec3(1, 0, 0)); |
||||||
|
entTranslate(planet_entity, glm::vec3(ep.f2.x, 0, 0)); |
||||||
|
|
||||||
|
entity& satellite_entity = rs->render_groups[0].entities[2]; |
||||||
|
sm = meInitMesh(3); |
||||||
|
glm::vec3 s_color(255, 0, 0); |
||||||
|
sm->vertices[0] = glm::vec3(0, 1, 0); |
||||||
|
sm->vert_colors[0] = s_color; |
||||||
|
sm->vertices[1] = glm::vec3(-1, -1, 0); |
||||||
|
sm->vert_colors[1] = s_color; |
||||||
|
sm->vertices[2] = glm::vec3(1, -1, 0); |
||||||
|
sm->vert_colors[2] = s_color; |
||||||
|
entInitMesh(satellite_entity, sm, GL_TRIANGLES); |
||||||
|
entRotate(satellite_entity, (float) M_PI_2, glm::vec3(1, 0, 0)); |
||||||
|
entSetWorldPosition(satellite_entity, g_ellipse.vertices[0]); |
||||||
|
|
||||||
|
renDoRenderLoop(rs, 60, doFrameCallback); |
||||||
|
|
||||||
|
renShutdown(rs); |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,122 @@ |
|||||||
|
|
||||||
|
#pragma once |
||||||
|
|
||||||
|
#include <cmath> |
||||||
|
|
||||||
|
#include <glm/glm.hpp> |
||||||
|
|
||||||
|
|
||||||
|
struct ellipse_parameters |
||||||
|
{ |
||||||
|
double a; // NOTE: semi-major axis
|
||||||
|
double b; // NOTE: semi-minor axis
|
||||||
|
double e; // NOTE: eccentricity
|
||||||
|
double c; // NOTE: linear eccentricity
|
||||||
|
glm::vec2 f1; |
||||||
|
glm::vec2 f2; |
||||||
|
}; |
||||||
|
|
||||||
|
struct ellipse_3d |
||||||
|
{ |
||||||
|
ellipse_parameters params; |
||||||
|
glm::vec3* vertices; |
||||||
|
uint vert_count; |
||||||
|
}; |
||||||
|
|
||||||
|
struct orbital_elements |
||||||
|
{ |
||||||
|
ellipse_parameters ep; |
||||||
|
double iota; // NOTE: (ι) inclination
|
||||||
|
double omega; // NOTE: (ω) argument of periapsis
|
||||||
|
double mu; // NOTE: (μ) gravittional parameter
|
||||||
|
double nu; // NOTE: (ν) true anomaly
|
||||||
|
}; |
||||||
|
|
||||||
|
ellipse_parameters |
||||||
|
constructEllipse(double a, double b); |
||||||
|
|
||||||
|
// NOTE: create vertices for a 3d ellipse
|
||||||
|
// NOTE: all vertices are in the x/y plane with z = 0
|
||||||
|
ellipse_3d |
||||||
|
constructEllipse3D(ellipse_parameters ep, uint vert_count); |
||||||
|
|
||||||
|
|
||||||
|
/* NOTE: how-to propagate orbit position given inital true anomaly, semimajor
|
||||||
|
* axis, mean motion, and eccentricity: ref) section 4.4, Kepler's Problem, |
||||||
|
* "Space Flight Dynamics" by Craig A. Kluever |
||||||
|
* |
||||||
|
* obtain initial eccentric anomaly (E1) from true anomaly (ϴ1) and e: |
||||||
|
* tan(E1/2) = sqrt((1-e)/(1+e)) * tan(ϴ1/2) |
||||||
|
* |
||||||
|
* obtain inital mean anomaly: |
||||||
|
* M1 = E1 - e*sin(E1) |
||||||
|
* |
||||||
|
* obtain propagated mean anomaly, mean motion (n) is sqrt(μ/a^3): |
||||||
|
* M2 = M1 + n(t2 - t1) |
||||||
|
* |
||||||
|
* express Kepler's equation in terms of propagated mean anomly: |
||||||
|
* M2 = E2 - e*sin(E2) |
||||||
|
* |
||||||
|
* Use Newton's method to search for an E2 that satisfies Kepler's equation: |
||||||
|
* guess a starting value for E2_k (k indicates iteration index): |
||||||
|
* E2_1 = M2 + e*sin(M2) + ((e^2 / 2) * sin(2 * M2)) |
||||||
|
* |
||||||
|
* test if guess is a solution: |
||||||
|
* F(E2_1) = E2_1 - e*sin(E2) - M2 |
||||||
|
* |
||||||
|
* if the result of the error function is not below some small value |
||||||
|
* (1 * 10^-8), compute the derivative, and and iterate again: |
||||||
|
* f'(E2_1) = 1 - e*cos(E2_1) |
||||||
|
* |
||||||
|
* use Newton's method to compute the next trial value of E2: |
||||||
|
* E2_2 = E2_1 - (f(E2_1) / f'(E2_1)) |
||||||
|
* |
||||||
|
* after we converge on a solution, convert eccentric anomaly back to true |
||||||
|
* anomoly: |
||||||
|
* tan(ϴ2/2) = sqrt((1+e) / (1-e)) * tan(E2/2) |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifdef ORBIT_IMPLEMENTATION |
||||||
|
|
||||||
|
double |
||||||
|
getMeanMotion(ellipse_parameters ep) |
||||||
|
{ |
||||||
|
return -1; |
||||||
|
} |
||||||
|
|
||||||
|
ellipse_parameters |
||||||
|
constructEllipse(double a, double b) |
||||||
|
{ |
||||||
|
assert(a > 0 && b > 0 && a >= b); |
||||||
|
ellipse_parameters ep = { a, b }; |
||||||
|
ep.c = sqrt(a * a - b * b); |
||||||
|
ep.e = ep.c / ep.a; |
||||||
|
ep.f1.x = -1 * ep.c; |
||||||
|
ep.f2.x = ep.c; |
||||||
|
return ep; |
||||||
|
} |
||||||
|
|
||||||
|
ellipse_3d |
||||||
|
constructEllipse3D(ellipse_parameters ep, uint vert_count) |
||||||
|
{ |
||||||
|
assert(ep.a > 0 && ep.b > 0 && |
||||||
|
ep.a >= ep.b && |
||||||
|
vert_count > 0); |
||||||
|
|
||||||
|
ellipse_3d e3d = { ep, nullptr, vert_count}; |
||||||
|
e3d.vertices = UTIL_ALLOC(vert_count, glm::vec3); |
||||||
|
double angle = 2 * M_PI / vert_count; |
||||||
|
|
||||||
|
for (uint i = 0; i < vert_count; i++) { |
||||||
|
double a = angle * i; |
||||||
|
// NOTE: solving for distance in polar coordinates
|
||||||
|
double r = ep.b / sqrt(1 - (ep.e * pow(cos(a), 2))); |
||||||
|
// NOTE: converting from polar to rectangular
|
||||||
|
e3d.vertices[i] = glm::vec3(cos(a) * r, sin(a) * r, 0); |
||||||
|
} |
||||||
|
|
||||||
|
return e3d; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
#endif |
||||||
@ -0,0 +1,201 @@ |
|||||||
|
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ |
||||||
|
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ |
||||||
|
!_TAG_OUTPUT_FILESEP slash /slash or backslash/ |
||||||
|
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ |
||||||
|
!_TAG_PROGRAM_AUTHOR Universal Ctags Team // |
||||||
|
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ |
||||||
|
!_TAG_PROGRAM_URL https://ctags.io/ /official site/ |
||||||
|
!_TAG_PROGRAM_VERSION 0.0.0 /a3c87ab5/ |
||||||
|
A ../tangerine/include/util_image.h /^ real32 A;$/;" m struct:util_RGBA typeref:typename:real32 |
||||||
|
B ../tangerine/include/util_image.h /^ real32 B;$/;" m struct:util_RGBA typeref:typename:real32 |
||||||
|
D3DKMT_HANDLE ../tangerine/include/platform_wait_for_vblank.h /^typedef uint32_t D3DKMT_HANDLE;$/;" t typeref:typename:uint32_t |
||||||
|
Debug ../tangerine/include/dumbLog.h /^ Debug$/;" e enum:log_level |
||||||
|
Error ../tangerine/include/dumbLog.h /^ Error,$/;" e enum:log_level |
||||||
|
G ../tangerine/include/util_image.h /^ real32 G;$/;" m struct:util_RGBA typeref:typename:real32 |
||||||
|
GLfloat ../tangerine/include/util.h /^typedef float GLfloat;$/;" t typeref:typename:float |
||||||
|
Info ../tangerine/include/dumbLog.h /^ Info,$/;" e enum:log_level |
||||||
|
LOG ../tangerine/include/dumbLog.h /^#define LOG(/;" d |
||||||
|
MVP ../tangerine/include/camera.h /^ glm::mat4 MVP;$/;" m struct:camera typeref:typename:glm::mat4 |
||||||
|
ORTHOGRAPHIC ../tangerine/include/camera.h /^ ORTHOGRAPHIC,$/;" e enum:projection_type |
||||||
|
OUT ../tangerine/include/dumbLog.h /^ std::ostream* OUT = &std::cout;$/;" m struct:dumbLog typeref:typename:std::ostream * |
||||||
|
PERSPECTIVE ../tangerine/include/camera.h /^ PERSPECTIVE,$/;" e enum:projection_type |
||||||
|
R ../tangerine/include/util_image.h /^ real32 R;$/;" m struct:util_RGBA typeref:typename:real32 |
||||||
|
SDL_Handles ../tangerine/include/renderer.h /^struct SDL_Handles$/;" s |
||||||
|
SafeRatio ../tangerine/include/util.h /^SafeRatio(real32 dividend, real32 divisor)$/;" f typeref:typename:real32 |
||||||
|
SafeTruncateToInt32 ../tangerine/include/util.h /^SafeTruncateToInt32(int64 val)$/;" f typeref:typename:int32 |
||||||
|
UTIL_ALLOC ../tangerine/include/util.h /^#define UTIL_ALLOC(/;" d |
||||||
|
Warning ../tangerine/include/dumbLog.h /^ Warning,$/;" e enum:log_level |
||||||
|
__anon26f519c10108 ../tangerine/include/platform_wait_for_vblank.h /^typedef struct {$/;" s |
||||||
|
bits_per_channel ../tangerine/include/util_image.h /^ int32 bits_per_channel;$/;" m struct:util_image typeref:typename:int32 |
||||||
|
bool32 ../tangerine/include/util.h /^typedef int32_t bool32;$/;" t typeref:typename:int32_t |
||||||
|
cam ../tangerine/include/renderer.h /^ camera cam;$/;" m struct:render_state typeref:typename:camera |
||||||
|
camera ../tangerine/include/camera.h /^struct camera$/;" s |
||||||
|
cameraCreateRay ../tangerine/include/camera.h /^v3f cameraCreateRay(camera& cam, v2i vp_coords, v2i vp_dims);$/;" p typeref:typename:v3f |
||||||
|
cameraInitPerspective ../tangerine/include/camera.h /^void cameraInitPerspective(camera& cam, glm::vec3 position, glm::vec3 target, glm::vec3 world_up/;" p typeref:typename:void |
||||||
|
cameraIntersectPlane ../tangerine/include/camera.h /^bool cameraIntersectPlane(camera& cam, v3f ray, v3f plane_origin, v3f plane_normal, v3f& interse/;" p typeref:typename:bool |
||||||
|
cameraMove ../tangerine/include/camera.h /^void cameraMove(camera& cam, bool up, bool left, bool down, bool right, bool forward, bool backw/;" p typeref:typename:void |
||||||
|
cameraRoll ../tangerine/include/camera.h /^void cameraRoll(camera& cam, bool CW, bool CCW);$/;" p typeref:typename:void |
||||||
|
cameraRotate ../tangerine/include/camera.h /^void cameraRotate(camera& cam, int32 xrel, int32 yrel);$/;" p typeref:typename:void |
||||||
|
cameraUnproject ../tangerine/include/camera.h /^v2f cameraUnproject(camera& cam, int x, int y, int vp_width, int vp_height);$/;" p typeref:typename:v2f |
||||||
|
clear_col ../tangerine/include/renderer.h /^ util_RGBA clear_col;$/;" m struct:render_state typeref:typename:util_RGBA |
||||||
|
color ../tangerine/include/lights.h /^ glm::vec3 color;$/;" m struct:point_light typeref:typename:glm::vec3 |
||||||
|
constructEllipse src/main.cpp /^constructEllipse(unsigned int segments, glm::vec2 f1, glm::vec2 f2, float ecc)$/;" f typeref:typename:glm::vec2 * |
||||||
|
cur_frame ../tangerine/include/animation.h /^ uint cur_frame;$/;" m struct:node_animation typeref:typename:uint |
||||||
|
currentDisplayMode ../tangerine/include/renderer.h /^ SDL_DisplayMode currentDisplayMode;$/;" m struct:SDL_Handles typeref:typename:SDL_DisplayMode |
||||||
|
data_len ../tangerine/include/util_image.h /^ uint data_len;$/;" m struct:util_image typeref:typename:uint |
||||||
|
default_shader ../tangerine/include/renderer.h /^ shader_program* default_shader;$/;" m struct:render_state typeref:typename:shader_program * |
||||||
|
diffuse_texture ../tangerine/include/mesh.h /^ util_image diffuse_texture;$/;" m struct:meMeshInfo typeref:typename:util_image |
||||||
|
doFrameCallback src/main.cpp /^doFrameCallback(render_state* rs)$/;" f typeref:typename:void |
||||||
|
dumbLog ../tangerine/include/dumbLog.h /^struct dumbLog$/;" s |
||||||
|
entFree ../tangerine/include/entity.h /^void entFree(entity& e);$/;" p typeref:typename:void |
||||||
|
entInit ../tangerine/include/entity.h /^bool entInit(entity& e, const char* model_path);$/;" p typeref:typename:bool |
||||||
|
entScale ../tangerine/include/entity.h /^void entScale(entity& e, glm::vec3 v);$/;" p typeref:typename:void |
||||||
|
entSetWorldPosition ../tangerine/include/entity.h /^void entSetWorldPosition(entity& e, glm::vec3 v);$/;" p typeref:typename:void |
||||||
|
entTranslate ../tangerine/include/entity.h /^void entTranslate(entity& e, glm::vec3 v);$/;" p typeref:typename:void |
||||||
|
entities ../tangerine/include/renderer.h /^ entity* entities;$/;" m struct:render_group typeref:typename:entity * |
||||||
|
entity ../tangerine/include/entity.h /^struct entity$/;" s |
||||||
|
entity_count ../tangerine/include/renderer.h /^ uint entity_count;$/;" m struct:render_group typeref:typename:uint |
||||||
|
file_path ../tangerine/include/util_image.h /^ char file_path[256];$/;" m struct:util_image typeref:typename:char[256] |
||||||
|
forward ../tangerine/include/camera.h /^ glm::vec3 forward;$/;" m struct:camera typeref:typename:glm::vec3 |
||||||
|
frame_callback_fn ../tangerine/include/renderer.h /^typedef void (*frame_callback_fn) (render_state*);$/;" t typeref:typename:void (*)(render_state *) |
||||||
|
frame_callback_fn src/main.cpp /^typedef void (*frame_callback_fn) (render_state*);$/;" t typeref:typename:void (*)(render_state *) file: |
||||||
|
g_platform_win_device_handles ../tangerine/include/platform_wait_for_vblank.h /^platform_win_device_handles g_platform_win_device_handles;$/;" v typeref:typename:platform_win_device_handles |
||||||
|
getCurrentMS ../tangerine/include/dumbLog.h /^ int getCurrentMS();$/;" p struct:dumbLog typeref:typename:int |
||||||
|
getCurrentTime ../tangerine/include/dumbLog.h /^ std::tm* getCurrentTime();$/;" p struct:dumbLog typeref:typename:std::tm * |
||||||
|
glContext ../tangerine/include/renderer.h /^ SDL_GLContext glContext;$/;" m struct:SDL_Handles typeref:typename:SDL_GLContext |
||||||
|
h ../tangerine/include/util_image.h /^ int32 h;$/;" m struct:util_image typeref:typename:int32 |
||||||
|
hAdapter ../tangerine/include/platform_wait_for_vblank.h /^ D3DKMT_HANDLE hAdapter = NULL;$/;" m struct:__anon26f519c10108 typeref:typename:D3DKMT_HANDLE |
||||||
|
hAngle ../tangerine/include/camera.h /^ float hAngle;$/;" m struct:camera typeref:typename:float |
||||||
|
handles ../tangerine/include/renderer.h /^ SDL_Handles handles;$/;" m struct:render_state typeref:typename:SDL_Handles |
||||||
|
index_buffer_count ../tangerine/include/render_object.h /^ GLuint index_buffer_count;$/;" m struct:render_object typeref:typename:GLuint |
||||||
|
index_buffer_id ../tangerine/include/render_object.h /^ GLuint index_buffer_id;$/;" m struct:render_object typeref:typename:GLuint |
||||||
|
indices ../tangerine/include/mesh.h /^ uint* indices;$/;" m struct:meMeshInfo typeref:typename:uint * |
||||||
|
int32 ../tangerine/include/util.h /^typedef int32_t int32;$/;" t typeref:typename:int32_t |
||||||
|
int64 ../tangerine/include/util.h /^typedef int64_t int64;$/;" t typeref:typename:int64_t |
||||||
|
intensity ../tangerine/include/lights.h /^ float intensity;$/;" m struct:point_light typeref:typename:float |
||||||
|
key_count ../tangerine/include/animation.h /^ uint key_count;$/;" m struct:node_animation typeref:typename:uint |
||||||
|
left ../tangerine/include/camera.h /^ glm::vec3 left;$/;" m struct:camera typeref:typename:glm::vec3 |
||||||
|
light_ID ../tangerine/include/lights.h /^ uint light_ID;$/;" m struct:point_light typeref:typename:uint |
||||||
|
light_group ../tangerine/include/lights.h /^struct light_group$/;" s |
||||||
|
lights ../tangerine/include/lights.h /^ point_light* lights;$/;" m struct:light_group typeref:typename:point_light * |
||||||
|
lights ../tangerine/include/renderer.h /^ light_group* lights;$/;" m struct:render_state typeref:typename:light_group * |
||||||
|
lightsAdd ../tangerine/include/lights.h /^lightsAdd(light_group* lights, glm::vec3 pos, glm::vec3 color, float intensity);$/;" p typeref:typename:bool |
||||||
|
lightsInit ../tangerine/include/lights.h /^light_group* lightsInit(uint max_lights = 1000);$/;" p typeref:typename:light_group * |
||||||
|
lightsOut ../tangerine/include/lights.h /^void lightsOut(light_group* lights);$/;" p typeref:typename:void |
||||||
|
lightsUpdate ../tangerine/include/lights.h /^void lightsUpdate(light_group* lights, shader_program* shader);$/;" p typeref:typename:void |
||||||
|
logLevelToString ../tangerine/include/dumbLog.h /^ const char* logLevelToString(log_level level);$/;" p struct:dumbLog typeref:typename:const char * |
||||||
|
log_level ../tangerine/include/dumbLog.h /^enum log_level {$/;" g |
||||||
|
logger ../tangerine/include/dumbLog.h /^static dumbLog logger;$/;" v typeref:typename:dumbLog |
||||||
|
main src/main.cpp /^main()$/;" f typeref:typename:int |
||||||
|
max_lights ../tangerine/include/lights.h /^ uint max_lights;$/;" m struct:light_group typeref:typename:uint |
||||||
|
meFreeMeshGroup ../tangerine/include/mesh.h /^void meFreeMeshGroup(meMeshGroup& mesh_group);$/;" p typeref:typename:void |
||||||
|
meInitAssimp ../tangerine/include/mesh.h /^bool meInitAssimp();$/;" p typeref:typename:bool |
||||||
|
meLoadFromFile ../tangerine/include/mesh.h /^bool meLoadFromFile(meMeshGroup& mesh_group, const char* filepath);$/;" p typeref:typename:bool |
||||||
|
meMeshGroup ../tangerine/include/mesh.h /^struct meMeshGroup$/;" s |
||||||
|
meMeshInfo ../tangerine/include/mesh.h /^struct meMeshInfo$/;" s |
||||||
|
meShutdownAssimp ../tangerine/include/mesh.h /^void meShutdownAssimp();$/;" p typeref:typename:void |
||||||
|
mesh_group ../tangerine/include/entity.h /^ meMeshGroup mesh_group;$/;" m struct:entity typeref:typename:meMeshGroup |
||||||
|
meshes ../tangerine/include/mesh.h /^ meMeshInfo** meshes;$/;" m struct:meMeshGroup typeref:typename:meMeshInfo ** |
||||||
|
model ../tangerine/include/camera.h /^ glm::mat4 model;$/;" m struct:camera typeref:typename:glm::mat4 |
||||||
|
model_matrix_id ../tangerine/include/shader_program.h /^ GLuint model_matrix_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
model_transform ../tangerine/include/mesh.h /^ glm::mat4 model_transform;$/;" m struct:meMeshInfo typeref:typename:glm::mat4 |
||||||
|
needs_update ../tangerine/include/lights.h /^ bool needs_update;$/;" m struct:light_group typeref:typename:bool |
||||||
|
node_anim ../tangerine/include/mesh.h /^ node_animation* node_anim;$/;" m struct:meMeshInfo typeref:typename:node_animation * |
||||||
|
node_animation ../tangerine/include/animation.h /^struct node_animation$/;" s |
||||||
|
node_xform ../tangerine/include/render_object.h /^ glm::mat4 node_xform;$/;" m struct:render_object typeref:typename:glm::mat4 |
||||||
|
normal_buffer_id ../tangerine/include/render_object.h /^ GLuint normal_buffer_id;$/;" m struct:render_object typeref:typename:GLuint |
||||||
|
normal_matrix_id ../tangerine/include/shader_program.h /^ GLuint normal_matrix_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
normals ../tangerine/include/mesh.h /^ glm::vec3* normals;$/;" m struct:meMeshInfo typeref:typename:glm::vec3 * |
||||||
|
num_channels ../tangerine/include/util_image.h /^ int32 num_channels;$/;" m struct:util_image typeref:typename:int32 |
||||||
|
num_indices ../tangerine/include/mesh.h /^ uint num_indices;$/;" m struct:meMeshInfo typeref:typename:uint |
||||||
|
num_lights ../tangerine/include/lights.h /^ uint num_lights;$/;" m struct:light_group typeref:typename:uint |
||||||
|
num_lights_id ../tangerine/include/shader_program.h /^ GLuint num_lights_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
num_meshes ../tangerine/include/mesh.h /^ uint num_meshes;$/;" m struct:meMeshGroup typeref:typename:uint |
||||||
|
num_vertices ../tangerine/include/mesh.h /^ uint num_vertices;$/;" m struct:meMeshInfo typeref:typename:uint |
||||||
|
pixels ../tangerine/include/util_image.h /^ uint8* pixels;$/;" m struct:util_image typeref:typename:uint8 * |
||||||
|
platform_init ../tangerine/include/platform_wait_for_vblank.h /^platform_init(SDL_Window* window)$/;" f typeref:typename:bool |
||||||
|
platform_wait_for_vblank ../tangerine/include/platform_wait_for_vblank.h /^platform_wait_for_vblank(bool wait=true)$/;" f typeref:typename:void |
||||||
|
platform_win_device_handles ../tangerine/include/platform_wait_for_vblank.h /^} platform_win_device_handles;$/;" t typeref:struct:__anon26f519c10108 |
||||||
|
point_light ../tangerine/include/lights.h /^struct point_light$/;" s |
||||||
|
position ../tangerine/include/camera.h /^ glm::vec3 position;$/;" m struct:camera typeref:typename:glm::vec3 |
||||||
|
position ../tangerine/include/lights.h /^ glm::vec3 position;$/;" m struct:point_light typeref:typename:glm::vec3 |
||||||
|
program_id ../tangerine/include/shader_program.h /^ GLuint program_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
projection ../tangerine/include/camera.h /^ glm::mat4 projection;$/;" m struct:camera typeref:typename:glm::mat4 |
||||||
|
projection_matrix_id ../tangerine/include/shader_program.h /^ GLuint projection_matrix_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
projection_type ../tangerine/include/camera.h /^enum projection_type$/;" g |
||||||
|
real32 ../tangerine/include/util.h /^typedef float real32;$/;" t typeref:typename:float |
||||||
|
real64 ../tangerine/include/util.h /^typedef double real64;$/;" t typeref:typename:double |
||||||
|
renAddLight ../tangerine/include/renderer.h /^renAddLight(render_state* rs,$/;" p typeref:typename:bool |
||||||
|
renAllocateGroup ../tangerine/include/renderer.h /^renAllocateGroup(uint entity_count, shader_program shader);$/;" p typeref:typename:render_group * |
||||||
|
renDoRenderLoop ../tangerine/include/renderer.h /^void renDoRenderLoop(render_state* rs,$/;" p typeref:typename:void |
||||||
|
renInit ../tangerine/include/renderer.h /^renInit(const char* title = "Tangerine",$/;" p typeref:typename:render_state * |
||||||
|
renRenderFrame ../tangerine/include/renderer.h /^void renRenderFrame(render_state* rs);$/;" p typeref:typename:void |
||||||
|
renShutdown ../tangerine/include/renderer.h /^void renShutdown(render_state* rs);$/;" p typeref:typename:void |
||||||
|
render_group ../tangerine/include/renderer.h /^struct render_group$/;" s |
||||||
|
render_group_count ../tangerine/include/renderer.h /^ uint render_group_count;$/;" m struct:render_state typeref:typename:uint |
||||||
|
render_groups ../tangerine/include/renderer.h /^ render_group* render_groups;$/;" m struct:render_state typeref:typename:render_group * |
||||||
|
render_object ../tangerine/include/render_object.h /^struct render_object$/;" s |
||||||
|
render_objs ../tangerine/include/entity.h /^ render_object* render_objs;$/;" m struct:entity typeref:typename:render_object * |
||||||
|
render_state ../tangerine/include/renderer.h /^struct render_state$/;" s |
||||||
|
ro ../tangerine/include/animation.h /^ render_object* ro;$/;" m struct:node_animation typeref:typename:render_object * |
||||||
|
roDraw ../tangerine/include/render_object.h /^void roDraw(render_object& ro,$/;" p typeref:typename:void |
||||||
|
roFree ../tangerine/include/render_object.h /^void roFree(render_object& ro);$/;" p typeref:typename:void |
||||||
|
roInit ../tangerine/include/render_object.h /^bool roInit(meMeshInfo* mi_in, render_object& ro_out);$/;" p typeref:typename:bool |
||||||
|
ro_count ../tangerine/include/entity.h /^ uint ro_count;$/;" m struct:entity typeref:typename:uint |
||||||
|
sampler_id ../tangerine/include/shader_program.h /^ GLuint sampler_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
setOutputStream ../tangerine/include/dumbLog.h /^ void setOutputStream(std::ostream* out);$/;" p struct:dumbLog typeref:typename:void |
||||||
|
shader ../tangerine/include/renderer.h /^ shader_program shader;$/;" m struct:render_group typeref:typename:shader_program |
||||||
|
shaderFree ../tangerine/include/shader_program.h /^void shaderFree(shader_program* shader);$/;" p typeref:typename:void |
||||||
|
shaderInit ../tangerine/include/shader_program.h /^shader_program* shaderInit(const char* vertex_code, const char* frag_code);$/;" p typeref:typename:shader_program * |
||||||
|
shader_program ../tangerine/include/shader_program.h /^struct shader_program$/;" s |
||||||
|
target ../tangerine/include/camera.h /^ glm::vec3 target;$/;" m struct:camera typeref:typename:glm::vec3 |
||||||
|
tex_id ../tangerine/include/render_object.h /^ GLuint tex_id;$/;" m struct:render_object typeref:typename:GLuint |
||||||
|
texture_coords ../tangerine/include/mesh.h /^ glm::vec3* texture_coords; \/\/ NOTE: stay aligned with other buffers$/;" m struct:meMeshInfo typeref:typename:glm::vec3 * |
||||||
|
uint ../tangerine/include/util.h /^typedef uint32_t uint;$/;" t typeref:typename:uint32_t |
||||||
|
uint32 ../tangerine/include/util.h /^typedef uint32_t uint32;$/;" t typeref:typename:uint32_t |
||||||
|
uint8 ../tangerine/include/util.h /^typedef uint8_t uint8;$/;" t typeref:typename:uint8_t |
||||||
|
up ../tangerine/include/camera.h /^ glm::vec3 up;$/;" m struct:camera typeref:typename:glm::vec3 |
||||||
|
utilBaseName ../tangerine/include/util.h /^const char* utilBaseName(const char* path_str);$/;" p typeref:typename:const char * |
||||||
|
utilConcatPath ../tangerine/include/util.h /^char* utilConcatPath(char* out, const char* base_dir, const char* file_name, uint max_len);$/;" p typeref:typename:char * |
||||||
|
utilConvertColor ../tangerine/include/util.h /^utilConvertColor(GLfloat buf[3], uint32 color)$/;" f typeref:typename:void |
||||||
|
utilCopyCStr ../tangerine/include/util.h /^bool utilCopyCStr(char* dest, const char* src, uint max_len);$/;" p typeref:typename:bool |
||||||
|
utilDumpTextFile ../tangerine/include/util.h /^char* utilDumpTextFile(const char* filename);$/;" p typeref:typename:char * |
||||||
|
utilFreeImage ../tangerine/include/util_image.h /^void utilFreeImage(util_image image);$/;" p typeref:typename:void |
||||||
|
utilLoadImageBytes ../tangerine/include/util_image.h /^util_image utilLoadImageBytes(const unsigned char* bytes, uint length);$/;" p typeref:typename:util_image |
||||||
|
utilLoadImagePath ../tangerine/include/util_image.h /^util_image utilLoadImagePath(const char* full_path);$/;" p typeref:typename:util_image |
||||||
|
utilLogAlloc ../tangerine/include/util.h /^void* utilLogAlloc(uint item_count, uint type_size, const char* file_name, const int line);$/;" p typeref:typename:void * |
||||||
|
utilMatchPrefix ../tangerine/include/util.h /^bool utilMatchPrefix(const char* lhs, const char* rhs, int sz);$/;" p typeref:typename:bool |
||||||
|
utilSafeFree ../tangerine/include/util.h /^void utilSafeFree(const void* mem);$/;" p typeref:typename:void |
||||||
|
utilWriteTextFile ../tangerine/include/util.h /^bool utilWriteTextFile(const char* filename, const char* text);$/;" p typeref:typename:bool |
||||||
|
util_RGBA ../tangerine/include/util_image.h /^struct util_RGBA$/;" s |
||||||
|
util_image ../tangerine/include/util_image.h /^struct util_image$/;" s |
||||||
|
uv_buffer_id ../tangerine/include/render_object.h /^ GLuint uv_buffer_id;$/;" m struct:render_object typeref:typename:GLuint |
||||||
|
v2f ../tangerine/include/util.h /^ v2f(): x(0), y(0) {}$/;" f struct:v2f |
||||||
|
v2f ../tangerine/include/util.h /^ v2f(real64 a, real64 b): x(a), y(b) {}$/;" f struct:v2f |
||||||
|
v2f ../tangerine/include/util.h /^struct v2f$/;" s |
||||||
|
v2i ../tangerine/include/util.h /^ v2i() : x(0), y(0) {}$/;" f struct:v2i |
||||||
|
v2i ../tangerine/include/util.h /^ v2i(int a, int b): x(a), y(b) {}$/;" f struct:v2i |
||||||
|
v2i ../tangerine/include/util.h /^struct v2i$/;" s |
||||||
|
v3f ../tangerine/include/util.h /^ v3f(): x(0), y(0), z(0) {}$/;" f struct:v3f |
||||||
|
v3f ../tangerine/include/util.h /^ v3f(real64 a, real64 b, real64 c): x(a), y(b), z(c) {}$/;" f struct:v3f |
||||||
|
v3f ../tangerine/include/util.h /^struct v3f$/;" s |
||||||
|
vAngle ../tangerine/include/camera.h /^ float vAngle;$/;" m struct:camera typeref:typename:float |
||||||
|
vertex_array_id ../tangerine/include/shader_program.h /^ GLuint vertex_array_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
vertex_buffer_id ../tangerine/include/render_object.h /^ GLuint vertex_buffer_id;$/;" m struct:render_object typeref:typename:GLuint |
||||||
|
vertices ../tangerine/include/mesh.h /^ glm::vec3* vertices;$/;" m struct:meMeshInfo typeref:typename:glm::vec3 * |
||||||
|
vidID ../tangerine/include/platform_wait_for_vblank.h /^ UINT vidID = 0;$/;" m struct:__anon26f519c10108 typeref:typename:UINT |
||||||
|
view ../tangerine/include/camera.h /^ glm::mat4 view;$/;" m struct:camera typeref:typename:glm::mat4 |
||||||
|
view_matrix_id ../tangerine/include/shader_program.h /^ GLuint view_matrix_id;$/;" m struct:shader_program typeref:typename:GLuint |
||||||
|
viewport_dims ../tangerine/include/renderer.h /^ glm::vec2 viewport_dims;$/;" m struct:render_state typeref:typename:glm::vec2 |
||||||
|
w ../tangerine/include/util_image.h /^ int32 w;$/;" m struct:util_image typeref:typename:int32 |
||||||
|
window ../tangerine/include/renderer.h /^ SDL_Window *window;$/;" m struct:SDL_Handles typeref:typename:SDL_Window * |
||||||
|
world_transform ../tangerine/include/entity.h /^ glm::mat4 world_transform;$/;" m struct:entity typeref:typename:glm::mat4 |
||||||
|
world_up ../tangerine/include/camera.h /^ glm::vec3 world_up;$/;" m struct:camera typeref:typename:glm::vec3 |
||||||
|
x ../tangerine/include/util.h /^ int32 x;$/;" m struct:v2i typeref:typename:int32 |
||||||
|
x ../tangerine/include/util.h /^ real64 x;$/;" m struct:v2f typeref:typename:real64 |
||||||
|
x ../tangerine/include/util.h /^ real64 x;$/;" m struct:v3f typeref:typename:real64 |
||||||
|
xform_array ../tangerine/include/animation.h /^ glm::mat4* xform_array;$/;" m struct:node_animation typeref:typename:glm::mat4 * |
||||||
|
y ../tangerine/include/util.h /^ int32 y;$/;" m struct:v2i typeref:typename:int32 |
||||||
|
y ../tangerine/include/util.h /^ real64 y;$/;" m struct:v2f typeref:typename:real64 |
||||||
|
y ../tangerine/include/util.h /^ real64 y;$/;" m struct:v3f typeref:typename:real64 |
||||||
|
z ../tangerine/include/util.h /^ real64 z;$/;" m struct:v3f typeref:typename:real64 |
||||||
Loading…
Reference in new issue