This commit is contained in:
		
							parent
							
								
									1ab514be71
								
							
						
					
					
						commit
						197e10c0cf
					
				
					 2 changed files with 18 additions and 11 deletions
				
			
		|  | @ -26,7 +26,6 @@ struct AssetMetadata | ||||||
| 	Type_T type; | 	Type_T type; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #pragma pack() |  | ||||||
| struct BlobMetadata | struct BlobMetadata | ||||||
| { | { | ||||||
| 	Tag_T tag; | 	Tag_T tag; | ||||||
|  |  | ||||||
|  | @ -38,23 +38,31 @@ public: | ||||||
| 			destination, | 			destination, | ||||||
| 			std::ios::binary | std::ios::trunc, | 			std::ios::binary | std::ios::trunc, | ||||||
| 		}; | 		}; | ||||||
| 		ensure(stream.is_open(), "Failed to pack shader asset to {}", destination.string()); | 		const auto code_blob_metadata = BlobMetadata { | ||||||
| 
 |  | ||||||
| 		// NOLINTBEGIN(cppcoreguidelines-pro-type-cstyle-cast)
 |  | ||||||
| 		stream.write((char *)&asset_metadata, sizeof(asset_metadata)); |  | ||||||
| 		stream.write((char *)&metadata, sizeof(metadata)); |  | ||||||
| 
 |  | ||||||
| 		auto code_blob_metadata = BlobMetadata { |  | ||||||
| 			.tag = std::to_underlying(BlobTag::code), | 			.tag = std::to_underlying(BlobTag::code), | ||||||
| 			.offset = static_cast<size_t>(stream.tellp()) + sizeof(BlobMetadata), | 			.offset = static_cast<size_t>(stream.tellp()) + sizeof(BlobMetadata), | ||||||
| 			.compression_type = CompressionType::none, | 			.compression_type = CompressionType::none, | ||||||
| 			.compressed_size = code_blob.size(), | 			.compressed_size = code_blob.size(), | ||||||
| 			.uncompressed_size = code_blob.size(), | 			.uncompressed_size = code_blob.size(), | ||||||
| 		}; | 		}; | ||||||
| 		stream.write((char *)&code_blob_metadata, sizeof(BlobMetadata)); |  | ||||||
| 
 | 
 | ||||||
| 		stream.write((char *)code_blob.data(), static_cast<long long>(code_blob.size())); | 		ensure(stream.is_open(), "Failed to pack shader asset to {}", destination.string()); | ||||||
| 		// NOLINTEND(cppcoreguidelines-pro-type-cstyle-cast)
 | 		const auto write = [&stream](auto &field) { | ||||||
|  | 			stream.write(std::bit_cast<char *>(&field), sizeof(field)); | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		write(asset_metadata.type); | ||||||
|  | 		write(asset_metadata.version); | ||||||
|  | 		write(metadata.type); | ||||||
|  | 		write(code_blob_metadata.tag); | ||||||
|  | 		write(code_blob_metadata.offset); | ||||||
|  | 		write(code_blob_metadata.compression_type); | ||||||
|  | 		write(code_blob_metadata.compressed_size); | ||||||
|  | 		write(code_blob_metadata.uncompressed_size); | ||||||
|  | 		stream.write( | ||||||
|  | 		    std::bit_cast<char *>(code_blob.data()), | ||||||
|  | 		    static_cast<long long>(code_blob.size()) | ||||||
|  | 		); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ShaderAsset(const std::filesystem::path &path); | 	ShaderAsset(const std::filesystem::path &path); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue