Skip to content

Commit

Permalink
add additional matcaps
Browse files Browse the repository at this point in the history
  • Loading branch information
nmwsharp committed Mar 24, 2020
1 parent 5294c22 commit 5ae954e
Show file tree
Hide file tree
Showing 8 changed files with 8,743 additions and 1 deletion.
6 changes: 6 additions & 0 deletions include/polyscope/render/material_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,11 @@ extern const std::array<unsigned char, 489> bindata_flat_g;
extern const std::array<unsigned char, 489> bindata_flat_b;
extern const std::array<unsigned char, 489> bindata_flat_k;

extern const std::array<unsigned char, 18071> bindata_mud;
extern const std::array<unsigned char, 20804> bindata_ceramic;
extern const std::array<unsigned char, 17500> bindata_jade;
extern const std::array<unsigned char, 29444> bindata_normal;


} // namespace render
} // namespace polyscope
79 changes: 79 additions & 0 deletions misc/material_images/image2material.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#include <stdio.h>
#include <stdlib.h>

#include <string>
#include <vector>

// this is a weird mix of C and C++, sorry world

FILE* open_or_exit(const char* fname, const char* mode) {
FILE* f = fopen(fname, mode);
if (f == NULL) {
perror(fname);
exit(EXIT_FAILURE);
}
return f;
}

int main(int argc, char** argv) {
if (argc < 2) {
fprintf(stderr,
"USAGE: %s {sym}\n\n"
" Creates bindata_{sym}.cpp from the contents of {sym}.jpg (etc)\n",
argv[0]);
return EXIT_FAILURE;
}

const char* sym = argv[1];

char symfile[256];
snprintf(symfile, sizeof(symfile), "bindata_%s.cpp", sym);

FILE* out = open_or_exit(symfile, "w");
fprintf(out, "#include <array>\n");

fprintf(out, "#include \"polyscope/render/material_defs.h\"\n");
fprintf(out, "namespace polyscope { \n");
fprintf(out, "namespace render { \n\n");

fprintf(out, "// clang-format off \n");


char inFilename[256];
snprintf(inFilename, sizeof(inFilename), "%s.jpg", sym);

FILE* in = open_or_exit(inFilename, "r");
unsigned char buf[256];
std::vector<unsigned char> bytes;
size_t nread = 0;
do {
nread = fread(buf, 1, sizeof(buf), in);
size_t i;
for (i = 0; i < nread; i++) {
bytes.push_back(buf[i]);
}
} while (nread > 0);

fprintf(out, "const std::array<unsigned char, %i> bindata_%s = {\n", (int)bytes.size(), sym);

printf("extern const std::array<unsigned char, %i> bindata_%s;\n", (int)bytes.size(), sym);

for (size_t iB = 0; iB < bytes.size(); iB++) {
fprintf(out, "0x%02x, ", bytes[iB]);
if (iB % 10 == 9) {
fprintf(out, "\n");
}
}

fprintf(out, "\n };\n\n");
fclose(in);

fprintf(out, "// clang-format on \n");

fprintf(out, "}\n");
fprintf(out, "}\n");

fclose(out);

return EXIT_SUCCESS;
}
4 changes: 4 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@ SET(SRCS
render/bindata/bindata_wax.cpp
render/bindata/bindata_candy.cpp
render/bindata/bindata_flat.cpp
render/bindata/bindata_mud.cpp
render/bindata/bindata_ceramic.cpp
render/bindata/bindata_jade.cpp
render/bindata/bindata_normal.cpp
)


Expand Down
2,093 changes: 2,093 additions & 0 deletions src/render/bindata/bindata_ceramic.cpp

Large diffs are not rendered by default.

1,763 changes: 1,763 additions & 0 deletions src/render/bindata/bindata_jade.cpp

Large diffs are not rendered by default.

1,820 changes: 1,820 additions & 0 deletions src/render/bindata/bindata_mud.cpp

Large diffs are not rendered by default.

2,957 changes: 2,957 additions & 0 deletions src/render/bindata/bindata_normal.cpp

Large diffs are not rendered by default.

22 changes: 21 additions & 1 deletion src/render/engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,23 @@ void Engine::loadDefaultMaterial(std::string name) {
buff[1] = &bindata_flat_g[0]; buffSize[1] = bindata_flat_g.size();
buff[2] = &bindata_flat_b[0]; buffSize[2] = bindata_flat_b.size();
buff[3] = &bindata_flat_k[0]; buffSize[3] = bindata_flat_k.size();
} else {
}
else if(name == "mud") {
newMaterial->supportsRGB = false;
for(int i = 0; i < 4; i++) {buff[i] = &bindata_mud[0]; buffSize[i] = bindata_mud.size();}
}
else if(name == "ceramic") {
newMaterial->supportsRGB = false;
for(int i = 0; i < 4; i++) {buff[i] = &bindata_ceramic[0]; buffSize[i] = bindata_ceramic.size();}
}
else if(name == "jade") {
newMaterial->supportsRGB = false;
for(int i = 0; i < 4; i++) {buff[i] = &bindata_jade[0]; buffSize[i] = bindata_jade.size();}
}
else if(name == "normal") {
newMaterial->supportsRGB = false;
for(int i = 0; i < 4; i++) {buff[i] = &bindata_normal[0]; buffSize[i] = bindata_normal.size();}
} else {
throw std::runtime_error("unrecognized default material name " + name);
}
// clang-format on
Expand Down Expand Up @@ -537,6 +553,10 @@ void Engine::loadDefaultMaterials() {
loadDefaultMaterial("wax");
loadDefaultMaterial("candy");
loadDefaultMaterial("flat");
loadDefaultMaterial("mud");
loadDefaultMaterial("ceramic");
loadDefaultMaterial("jade");
loadDefaultMaterial("normal");
}


Expand Down

0 comments on commit 5ae954e

Please sign in to comment.