-
Notifications
You must be signed in to change notification settings - Fork 47
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #74 from 9prady9/api_changes
API & Framework changes
- Loading branch information
Showing
131 changed files
with
9,300 additions
and
5,703 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# | ||
# Try to find the FreeImage library and include path. | ||
# Once done this will define | ||
# | ||
# FREEIMAGE_FOUND | ||
# FREEIMAGE_INCLUDE_PATH | ||
# FREEIMAGE_LIBRARY | ||
# FREEIMAGE_STATIC_LIBRARY | ||
# FREEIMAGE_DYNAMIC_LIBRARY | ||
# | ||
|
||
OPTION(USE_FREEIMAGE_STATIC "Use Static FreeImage Lib" OFF) | ||
|
||
FIND_PATH( FREEIMAGE_INCLUDE_PATH | ||
NAMES FreeImage.h | ||
HINTS ${PROJECT_SOURCE_DIR}/extern/FreeImage | ||
PATHS | ||
/usr/include | ||
/usr/local/include | ||
/sw/include | ||
/opt/local/include | ||
DOC "The directory where FreeImage.h resides") | ||
|
||
FIND_LIBRARY( FREEIMAGE_DYNAMIC_LIBRARY | ||
NAMES FreeImage freeimage | ||
HINTS ${PROJECT_SOURCE_DIR}/FreeImage | ||
PATHS | ||
/usr/lib64 | ||
/usr/lib | ||
/usr/local/lib64 | ||
/usr/local/lib | ||
/sw/lib | ||
/opt/local/lib | ||
DOC "The FreeImage library") | ||
|
||
SET(PX ${CMAKE_STATIC_LIBRARY_PREFIX}) | ||
SET(SX ${CMAKE_STATIC_LIBRARY_SUFFIX}) | ||
FIND_LIBRARY( FREEIMAGE_STATIC_LIBRARY | ||
NAMES ${PX}FreeImageLIB${SX} ${PX}FreeImage${SX} ${PX}freeimage${SX} | ||
HINTS ${PROJECT_SOURCE_DIR}/FreeImage | ||
PATHS | ||
/usr/lib64 | ||
/usr/lib | ||
/usr/local/lib64 | ||
/usr/local/lib | ||
/sw/lib | ||
/opt/local/lib | ||
DOC "The FreeImage library") | ||
UNSET(PX) | ||
UNSET(SX) | ||
|
||
IF(USE_FREEIMAGE_STATIC) | ||
MESSAGE(STATUS "Using Static FreeImage Lib") | ||
ADD_DEFINITIONS(-DFREEIMAGE_LIB) | ||
SET(FREEIMAGE_LIBRARY ${FREEIMAGE_STATIC_LIBRARY}) | ||
ELSE(USE_FREEIMAGE_STATIC) | ||
MESSAGE(STATUS "Using Dynamic FreeImage Lib") | ||
REMOVE_DEFINITIONS(-DFREEIMAGE_LIB) | ||
SET(FREEIMAGE_LIBRARY ${FREEIMAGE_DYNAMIC_LIBRARY}) | ||
ENDIF(USE_FREEIMAGE_STATIC) | ||
|
||
MARK_AS_ADVANCED( | ||
FREEIMAGE_DYNAMIC_LIBRARY | ||
FREEIMAGE_STATIC_LIBRARY | ||
) | ||
|
||
INCLUDE(FindPackageHandleStandardArgs) | ||
|
||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FREEIMAGE DEFAULT_MSG FREEIMAGE_INCLUDE_PATH FREEIMAGE_LIBRARY) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# Function to turn an GLSL shader source file into a C string within a source file. | ||
# xxd uses its input's filename to name the string and its length, so we | ||
# need to move them to a name that depends only on the path output, not its | ||
# input. Otherwise, builds in different relative locations would put the | ||
# source into different variable names, and everything would fall over. | ||
# The actual name will be filename (.s replaced with underscores), and length | ||
# name_len. | ||
# | ||
# Usage example: | ||
# | ||
# set(KERNELS a.cl b/c.cl) | ||
# resource_to_cxx_source( | ||
# SOURCES ${KERNELS} | ||
# VARNAME OUTPUTS | ||
# ) | ||
# add_executable(foo ${OUTPUTS}) | ||
# | ||
# The namespace they are placed in is taken from filename.namespace. | ||
# | ||
# For example, if the input file is kernel.cl, the two variables will be | ||
# unsigned char ns::kernel_cl[]; | ||
# unsigned int ns::kernel_cl_len; | ||
# | ||
# where ns is the contents of kernel.cl.namespace. | ||
|
||
INCLUDE(CMakeParseArguments) | ||
|
||
SET(GLSL2CPP_PROGRAM "glsl2cpp") | ||
|
||
FUNCTION(GLSL_TO_H) | ||
CMAKE_PARSE_ARGUMENTS(RTCS "" "VARNAME;EXTENSION;OUTPUT_DIR;TARGETS;NAMESPACE;EOF" "SOURCES" ${ARGN}) | ||
|
||
SET(_output_files "") | ||
FOREACH(_input_file ${RTCS_SOURCES}) | ||
GET_FILENAME_COMPONENT(_path "${_input_file}" PATH) | ||
GET_FILENAME_COMPONENT(_name "${_input_file}" NAME) | ||
GET_FILENAME_COMPONENT(var_name "${_input_file}" NAME_WE) | ||
|
||
SET(_namespace "${RTCS_NAMESPACE}") | ||
STRING(REPLACE "." "_" var_name ${var_name}) | ||
|
||
SET(_output_path "${CMAKE_CURRENT_BINARY_DIR}/${RTCS_OUTPUT_DIR}") | ||
SET(_output_file "${_output_path}/${var_name}.${RTCS_EXTENSION}") | ||
|
||
ADD_CUSTOM_COMMAND( | ||
OUTPUT ${_output_file} | ||
DEPENDS ${_input_file} ${GLSL2CPP_PROGRAM} | ||
COMMAND ${CMAKE_COMMAND} -E make_directory "${_output_path}" | ||
COMMAND ${CMAKE_COMMAND} -E echo "\\#include \\<${_path}/${var_name}.hpp\\>" >>"${_output_file}" | ||
COMMAND ${GLSL2CPP_PROGRAM} --file ${_name} --namespace ${_namespace} --output ${_output_file} --name ${var_name} --eof ${RTCS_EOF} | ||
WORKING_DIRECTORY "${_path}" | ||
COMMENT "Converting ${_input_file} to GLSL source string" | ||
) | ||
|
||
LIST(APPEND _output_files ${_output_file}) | ||
ENDFOREACH() | ||
ADD_CUSTOM_TARGET(${RTCS_NAMESPACE}_bin_target DEPENDS ${_output_files}) | ||
|
||
SET("${RTCS_VARNAME}" ${_output_files} PARENT_SCOPE) | ||
SET("${RTCS_TARGETS}" ${RTCS_NAMESPACE}_bin_target PARENT_SCOPE) | ||
ENDFUNCTION(GLSL_TO_H) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
// Umar Arshad | ||
// Copyright 2015-2019 | ||
// | ||
// Modified by Pradeep Garigipati on Dec 30, 2015 for Forge | ||
// Purpose of modification: To use the program to convert | ||
// GLSL shader files into compile time constant string literals | ||
|
||
#include <fstream> | ||
#include <sstream> | ||
#include <iostream> | ||
#include <string> | ||
#include <vector> | ||
#include <map> | ||
#include <memory> | ||
|
||
using namespace std; | ||
typedef map<string, string> opt_t; | ||
|
||
static | ||
void print_usage() { | ||
cout << R"delimiter(GLSL2CPP | ||
Converts OpenGL shader files to C++ headers. It is similar to bin2c and xxd but adds | ||
support for namespaces. | ||
| --name | name of the variable (default: var) | | ||
| --file | input file | | ||
| --output | output file (If no output is specified then it prints to stdout) | | ||
| --type | Type of variable (default: char) | | ||
| --namespace | A space seperated list of namespaces | | ||
| --formatted | Tabs for formatting | | ||
| --version | Prints my name | | ||
| --help | Prints usage info | | ||
Example | ||
------- | ||
Command: | ||
./glsl2cpp --file blah.txt --namespace shaders --formatted --name image_vs | ||
Will produce the following: | ||
#pragma once | ||
#include <cstddef> | ||
namespace shaders { | ||
static const char image_vs[] = R"shader( | ||
#version 330 | ||
layout(location = 0) in vec3 pos; | ||
layout(location = 1) in vec2 tex; | ||
uniform mat4 matrix; | ||
out vec2 texcoord; | ||
void main() { | ||
texcoord = tex; | ||
gl_Position = matrix * vec4(pos,1.0); | ||
} | ||
)shader"; | ||
} | ||
)delimiter"; | ||
exit(0); | ||
} | ||
|
||
static bool formatted; | ||
|
||
static | ||
void add_tabs(const int level) | ||
{ | ||
if(formatted) { | ||
for(int i =0; i < level; i++) { | ||
cout << "\t"; | ||
} | ||
} | ||
} | ||
|
||
static | ||
opt_t parse_options(const vector<string>& args) | ||
{ | ||
opt_t options; | ||
|
||
options["--name"] = ""; | ||
options["--type"] = ""; | ||
options["--file"] = ""; | ||
options["--output"] = ""; | ||
options["--namespace"] = ""; | ||
options["--eof"] = ""; | ||
|
||
//Parse Arguments | ||
string curr_opt; | ||
bool verbose = false; | ||
for(auto arg : args) { | ||
if(arg == "--verbose") { | ||
verbose = true; | ||
} else if(arg == "--formatted") { | ||
formatted = true; | ||
} else if(arg == "--version") { | ||
cout << args[0] << " Original Author: Umar Arshad;\n Modified later by: Pradeep Garigipati." << endl; | ||
} else if(arg == "--help") { | ||
print_usage(); | ||
} else if(options.find(arg) != options.end()) { | ||
curr_opt = arg; | ||
} else if(curr_opt.empty()) { | ||
//cerr << "Invalid Argument: " << arg << endl; | ||
} else { | ||
if(options[curr_opt] != "") { | ||
options[curr_opt] += " " + arg; | ||
} | ||
else { | ||
options[curr_opt] += arg; | ||
} | ||
} | ||
} | ||
|
||
if(verbose) { | ||
for(auto opts : options) { | ||
cout << get<0>(opts) << " " << get<1>(opts) << endl; | ||
} | ||
} | ||
return options; | ||
} | ||
|
||
int main(int argc, const char * const * const argv) | ||
{ | ||
|
||
vector<string> args(argv, argv+argc); | ||
|
||
opt_t&& options = parse_options(args); | ||
|
||
//Save default cout buffer. Need this to prevent crash. | ||
auto bak = cout.rdbuf(); | ||
unique_ptr<ofstream> outfile; | ||
|
||
// Set defaults | ||
if(options["--name"] == "") { options["--name"] = "var"; } | ||
if(options["--output"] != "") { | ||
//redirect stream if output file is specified | ||
outfile.reset(new ofstream(options["--output"])); | ||
cout.rdbuf(outfile->rdbuf()); | ||
} | ||
|
||
cout << "#pragma once\n"; | ||
cout << "#include <string>\n"; // defines std::string | ||
|
||
int ns_cnt = 0; | ||
int level = 0; | ||
if(options["--namespace"] != "") { | ||
std::stringstream namespaces(options["--namespace"]); | ||
string name; | ||
namespaces >> name; | ||
do { | ||
add_tabs(level++); | ||
cout << "namespace " << name << "\n{\n"; | ||
ns_cnt++; | ||
namespaces >> name; | ||
} while(!namespaces.fail()); | ||
} | ||
|
||
if(options["--type"] == "") { | ||
options["--type"] = "std::string"; | ||
} | ||
add_tabs(level); | ||
cout << "static const " << options["--type"] << " " << options["--name"] << " = R\"shader(\n"; | ||
level++; | ||
|
||
ifstream input(options["--file"]); | ||
|
||
for(std::string line; std::getline(input, line);) { | ||
add_tabs(level); | ||
cout << line << endl; | ||
} | ||
|
||
if (options["--eof"].c_str()[0] == '1') { | ||
// Add end of file character | ||
cout << "0x0"; | ||
} | ||
|
||
add_tabs(--level); | ||
cout << ")shader\";\n"; | ||
|
||
while(ns_cnt--) { | ||
add_tabs(--level); | ||
cout << "}\n"; | ||
} | ||
cout.rdbuf(bak); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.