🛠️🐜 Antkeeper superbuild with dependencies included https://antkeeper.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.9 KiB

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <vector>
  4. #include <iostream>
  5. #include "tinyexr.h"
  6. static void GenerateWhite1(size_t width, size_t height)
  7. {
  8. std::vector<float> rgb;
  9. rgb.resize(width * height * 3);
  10. for (size_t i = 0; i < width * height * 3; i++) {
  11. rgb[i] = 1.0f;
  12. }
  13. const char *err = nullptr;
  14. int ret = SaveEXR(rgb.data(), int(width), int(height), /* channels */3, /* fp16? */0, "white1.exr", &err);
  15. if (!ret) {
  16. if (err) {
  17. std::cerr << err << std::endl;
  18. FreeEXRErrorMessage(err);
  19. }
  20. std::cerr << "failed to write white.exr" << std::endl;
  21. }
  22. }
  23. static void GenerateWhite10(size_t width, size_t height)
  24. {
  25. std::vector<float> rgb;
  26. rgb.resize(width * height * 3);
  27. for (size_t i = 0; i < width * height * 3; i++) {
  28. rgb[i] = 10.0f;
  29. }
  30. const char *err = nullptr;
  31. int ret = SaveEXR(rgb.data(), int(width), int(height), /* channels */3, /* fp16? */0, "white10.exr", &err);
  32. if (!ret) {
  33. if (err) {
  34. std::cerr << err << std::endl;
  35. FreeEXRErrorMessage(err);
  36. }
  37. std::cerr << "failed to write white10.exr" << std::endl;
  38. }
  39. }
  40. static void GenerateWhite100(size_t width, size_t height)
  41. {
  42. std::vector<float> rgb;
  43. rgb.resize(width * height * 3);
  44. for (size_t i = 0; i < width * height * 3; i++) {
  45. rgb[i] = 100.0f;
  46. }
  47. const char *err = nullptr;
  48. int ret = SaveEXR(rgb.data(), int(width), int(height), /* channels */3, /* fp16? */0, "white100.exr", &err);
  49. if (!ret) {
  50. if (err) {
  51. std::cerr << err << std::endl;
  52. FreeEXRErrorMessage(err);
  53. }
  54. std::cerr << "failed to write white100.exr" << std::endl;
  55. }
  56. }
  57. int main(int argc, char** argv)
  58. {
  59. int width = 512;
  60. int height = 512;
  61. if (argc > 2) {
  62. width = std::min(1, atoi(argv[2]));
  63. }
  64. if (argc > 3) {
  65. height = std::min(1, atoi(argv[3]));
  66. }
  67. GenerateWhite1(width, height);
  68. GenerateWhite10(width, height);
  69. GenerateWhite100(width, height);
  70. return EXIT_SUCCESS;
  71. }