Renderer.txt 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. Actually add frustum culling
  2. Implement RenderQueue sorting with support for sort type, priority and separable pass
  3. - Use a hash list(containing type, queue, layer, etc.) for faster sorting
  4. -----------------------------------------------------------
  5. REFACTORING, NOTES AND OTHER TRIVIAL STUFF
  6. Finally
  7. - Document elements marked with TODO UNDOCUMENTED
  8. Semantic/design issues:
  9. - Consider removing SceneManager from Core? I two scene manager base classes.
  10. - GpuParamBlockBuffer and GpuParams::cloneForCore are very clumsy in how they deal in keeping two separate param blocks. Rethink this a bit.
  11. ---------------------------
  12. Just notes for later potentially:
  13. - I can only update entire Mesh at once.
  14. - I keep bounds for the entire mesh and not per-submesh
  15. - I don't serialize bounds and they are recalculated whenever a mesh is loaded
  16. -------------------------
  17. Texture compression/mipmaps:
  18. Remove DXT2, DXT4 formats. Add BC4, 5, 6, 7 formats, including their conversion formats.
  19. Compile nvtt as a library. Add include files. Add library to Dependencies repo, and info about it to Dependencies.txt. Add it to list of licences.
  20. Add compress(format) functionality to PixelUtil. Optionally also uncompress().
  21. Add calculateMips functionality to PixelUtil. It takes PixelData as parameter, and returns a set of PixelData mips.
  22. Add Texture import options that allow you to choose format of the texture when loading. Not just compressed/uncompressed but all formats.
  23. - PixelUtil can convert all normal formats. compress can deal with others.
  24. Add support for DDS import (also use nvtt?)
  25. IMPLEMENTATION:
  26. Will likely need CompressionOptions struct since there are so many.
  27. There are other conversion methods that don't support compression. That's fine, we can do that manually.
  28. Only 2D and cube input images are supported.
  29. I won't support BC6 and BC7 initially. Add this to notes.txt
  30. NVTT support:
  31. - Ensure I disable cuda compression as its enabled by default - compressor.enableCudaAcceleration(false);
  32. - Create an OutputHandler that can accept multiple calls to writeData
  33. - Call outputOptions.setOutputHeader(false); to disable header generation since I don't generate dds
  34. - CompressionOptions needs to have:
  35. - Format
  36. - Quality
  37. - IsTextureSRGB - inputOptions.setGamma(1.0f, 1.0f);
  38. - AlphaMode - InputOptions::setAlphaMode(AlphaMode alphaMode);
  39. Mip map options
  40. - InputOptions::setMipmapGeneration(bool enabled, int maxLevel);
  41. - Mipmaps can only be generated from uncompressed textures
  42. - Set if its a normal map and should the mips be renormalized - InputOptions::setNormalMap(bool isNormalMap);, InputOptions::setNormalizeMipmaps(bool normalizeMipmaps);
  43. - Rounding modes? Probably not for now
  44. - AlphaMode - InputOptions::setAlphaMode(AlphaMode alphaMode);
  45. Check out estimateSize