1
0
Fork 0

Textures build script and fixes

tmp
May B. 2020-10-07 22:53:41 +02:00
parent 7f6136bffd
commit 07d12b3452
68 changed files with 224 additions and 120 deletions

View File

@ -71,7 +71,8 @@ To get a local copy up and running, follow these simple steps.
* Python: utility scripts
* [Tracy](https://github.com/wolfpld/tracy) v0.7: profiling
* [glslc](https://github.com/KhronosGroup/glslang): build vk shaders
* [Compressonator](https://github.com/GPUOpen-Tools/compressonator): build textures
* Imagemagick: build textures (convert jpg to png)
* [Compressonator](https://github.com/GPUOpen-Tools/compressonator): build textures (compress dds)
### Installation
@ -123,8 +124,8 @@ GLSL="glslValidator -V" ./compile.sh # Other glslang compiler
6. Rebuild textures
```sh
cd resource/textures-src
./merge <args> # combine grey images to RGBA
Compressonator -fd BC3 -mipsize <size> <in> <out>
./compile.sh # Build all texture dds
./merge.py <args> # Combine grey images to RGB
```

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
resource/content/textures/ui/Aim.dds (Stored with Git LFS)

Binary file not shown.

BIN
resource/textures-src/1024-realistic/Debug_COLOR.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
resource/textures-src/1024-realistic/Debug_HOS.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
resource/textures-src/1024-realistic/Debug_NORM.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
resource/textures-src/1024-realistic/Rough_rock_019_HOS.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
resource/textures-src/1024-realistic/Sand_005_hos.jpg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
resource/textures-src/1024-realistic/Stone_Wall_008_HOS.jpg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,51 @@
Abstract_006_COLOR.jpg terrain/Alien.dds
Abstract_006_HOS.png terrain/Alien.hos.dds
Abstract_006_NORM.jpg terrain/Alien.nrm.dds
Debug_COLOR.jpg terrain/Debug.dds
Debug_HOS.png terrain/Debug.hos.dds
Debug_NORM.jpg terrain/Debug.nrm.dds
Dirt_003_COLOR.png terrain/Dirt.dds
Dirt_003_HOS.png terrain/Dirt.hos.dds
Dirt_003_NRM.png terrain/Dirt.nrm.dds
Ground_Forest_003_baseColor.jpg terrain/Forest_grass.dds
Ground_Forest_003_hos.jpg terrain/Forest_grass.hos.dds
Ground_Forest_003_normal.jpg terrain/Forest_grass.nrm.dds
Grass_001_COLOR.jpg terrain/Grass.dds
Grass_001_HOS.jpg terrain/Grass.hos.dds
Grass_001_NORM.jpg terrain/Grass.nrm.dds
Bark_005_baseColor.jpg terrain/Mapl.dds
Bark_005_HOS.png terrain/Mapl.hos.dds
Bark_005_normal.jpg terrain/Mapl.nrm.dds
Ground_Forest_002_baseColor.jpg terrain/Plain_grass.dds
Ground_Forest_002_hos.jpg terrain/Plain_grass.hos.dds
Ground_Forest_002_normal.jpg terrain/Plain_grass.nrm.dds
Rough_rock_019_COLOR.jpg terrain/Rough_rock.dds
Rough_rock_019_HOS.jpg terrain/Rough_rock.hos.dds
Rough_rock_019_NRM.jpg terrain/Rough_rock.nrm.dds
Sand_005_baseColor.jpg terrain/Sand.dds
Sand_005_hos.jpg terrain/Sand.hos.dds
Sand_005_normal.jpg terrain/Sand.nrm.dds
Seaside_rocks_01_1K_Base_Color.png terrain/Seaside_rock.dds
Seaside_rocks_01_1K_HOS.png terrain/Seaside_rock.hos.dds
Seaside_rocks_01_1K_Normal.png terrain/Seaside_rock.nrm.dds
Stone_Path_004_baseColor.jpg terrain/Stone_path.dds
Stone_Path_004_HOS.jpg terrain/Stone_path.hos.dds
Stone_Path_004_normal.jpg terrain/Stone_path.nrm.dds
Stone_Wall_008_COLOR.jpg terrain/Stone_wall.dds
Stone_Wall_008_HOS.jpg terrain/Stone_wall.hos.dds
Stone_Wall_008_NORM.jpg terrain/Stone_wall.nrm.dds
Water_002_COLOR.jpg terrain/Water.dds
Water_002_HOS.jpg terrain/Water.hos.dds
Water_002_NORM.jpg terrain/Water.nrm.dds
Space_orange.cube.back.png sky/Space_orange.cube.back.dds
Space_orange.cube.bottom.png sky/Space_orange.cube.bottom.dds
Space_orange.cube.front.png sky/Space_orange.cube.front.dds
Space_orange.cube.left.png sky/Space_orange.cube.left.dds
Space_orange.cube.right.png sky/Space_orange.cube.right.dds
Space_orange.cube.top.png sky/Space_orange.cube.top.dds
Space_tray.cube.back.png sky/Space_tray.cube.back.dds
Space_tray.cube.bottom.png sky/Space_tray.cube.bottom.dds
Space_tray.cube.front.png sky/Space_tray.cube.front.dds
Space_tray.cube.left.png sky/Space_tray.cube.left.dds
Space_tray.cube.right.png sky/Space_tray.cube.right.dds
Space_tray.cube.top.png sky/Space_tray.cube.top.dds

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
BASEDIR=$(dirname "$0")
TARGETDIR="$BASEDIR/../content/textures"
TMPDIR=$(mktemp -d -t dds.build.XXX)
CP=${CP:="CompressonatorCLI"}
PACK=${PACK:="1024-realistic"}
function compile {
tmp="$TMPDIR/$(basename -- $1).png"
convert -colorspace SRGB -- "$BASEDIR/$1" $tmp
$CP -fd BC3 -miplevels $3 $tmp "$TARGETDIR/$2" &> /dev/null
rm $tmp
echo $2
}
compile "Aim.png" "ui/Aim.dds" 1
while read from to
do
if [ -f "$BASEDIR/$PACK/$from" ]; then
compile "$PACK/$from" "$PACK/$to" 20
else
echo "File not found: $from" >&2
exit 1
fi
done < "$BASEDIR/$PACK/index.txt"
rmdir $TMPDIR
echo "Done"

View File

@ -3,6 +3,7 @@
#include "common.hpp"
#include <optional>
#include <vector>
#include <cmath>
namespace render {
@ -75,7 +76,7 @@ public:
int samples = 1, bool optimal = true): properties(props), layout(layout),
usage(usage), aspect(aspect), samples(samples), optimal(optimal)
{
assert(samples > 0 && (ceil(log2(n)) == floor(log2(n))) && "Samples must be pow2");
assert(samples > 0 && (std::ceil(std::log2(samples)) == std::floor(std::log2(samples))) && "Samples must be pow2");
}
Layout layout;
Usage usage;
@ -110,7 +111,7 @@ public:
};
/// Only supports dds files
/// DXT1(BC1) DXT3(BC2) DXT5(BC3)
/// DXT3(BC2) DXT5(BC3)
static _FORCE_INLINE_ std::unique_ptr<Texture> LoadFromFile(const std::string &path, const sampling &props) {
assert(loadFunc != nullptr && "Uninitialized renderer");
return loadFunc(path, props);

View File

@ -260,24 +260,23 @@ void Allocator::transitionImageLayout(VkImage image, VkFormat format, VkImageLay
void Allocator::copyBufferToImage(VkBuffer src, VkImage dest, uint32_t width, uint32_t height, uint32_t mipLevels) {
beginCmd(transferBuffer);
VkDeviceSize offset = 0;
std::vector<VkBufferImageCopy> regions{mipLevels};
for (size_t i = 0; i < mipLevels; i++) {
regions[i].bufferOffset = offset;
regions[i].bufferRowLength = std::max<uint32_t>(1, width >> i);
regions[i].bufferImageHeight = std::max<uint32_t>(1, height >> i);
regions[i].imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
regions[i].imageSubresource.mipLevel = i;
regions[i].imageSubresource.baseArrayLayer = 0;
regions[i].imageSubresource.layerCount = 1;
regions[i].imageOffset = {0, 0, 0};
regions[i].imageExtent = {regions[i].bufferRowLength, regions[i].bufferImageHeight, 1};
regions[i].imageExtent = {width >> i, height >> i, 1};
//NOTE: may fail without width % 4 && height % 4
offset += regions[i].imageExtent.height * regions[i].imageExtent.width * regions[i].imageExtent.depth;
regions[i].bufferOffset = offset;
regions[i].bufferRowLength = std::max<uint32_t>(4, regions[i].imageExtent.width);
regions[i].bufferImageHeight = std::max<uint32_t>(4, regions[i].imageExtent.height);
offset += regions[i].bufferRowLength * regions[i].bufferImageHeight;
}
vkCmdCopyBufferToImage(transferBuffer, src, dest, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels, regions.data());

View File

@ -216,7 +216,7 @@ Pipeline::Pipeline(VkDevice device, const PhysicalDeviceInfo &info, const render
multisampling.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO;
multisampling.rasterizationSamples = info.samples;
//MAYBE: add option
multisampling.sampleShadingEnable = hasSamples;
multisampling.sampleShadingEnable = info.features.sampleRateShading && hasSamples;
multisampling.minSampleShading = .2f;
multisampling.pSampleMask = nullptr;
multisampling.alphaToCoverageEnable = VK_FALSE;

View File

@ -372,6 +372,7 @@ bool Renderer::Load(Window& window, const renderOptions& opt, int samples) {
VkPhysicalDeviceFeatures deviceFeatures{};
deviceFeatures.geometryShader = physicalInfo.features.geometryShader;
deviceFeatures.samplerAnisotropy = physicalInfo.features.samplerAnisotropy;
deviceFeatures.sampleRateShading = physicalInfo.features.sampleRateShading;
std::vector<const char*> extensions(requiredExtensions);
extensions.insert(extensions.end(), physicalInfo.optionalExtensions.begin(), physicalInfo.optionalExtensions.end());