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; | ||||
| }; | ||||
| 
 | ||||
| #pragma pack() | ||||
| struct BlobMetadata | ||||
| { | ||||
| 	Tag_T tag; | ||||
|  |  | |||
|  | @ -38,23 +38,31 @@ public: | |||
| 			destination, | ||||
| 			std::ios::binary | std::ios::trunc, | ||||
| 		}; | ||||
| 		ensure(stream.is_open(), "Failed to pack shader asset to {}", destination.string()); | ||||
| 
 | ||||
| 		// 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 { | ||||
| 		const auto code_blob_metadata = BlobMetadata { | ||||
| 			.tag = std::to_underlying(BlobTag::code), | ||||
| 			.offset = static_cast<size_t>(stream.tellp()) + sizeof(BlobMetadata), | ||||
| 			.compression_type = CompressionType::none, | ||||
| 			.compressed_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())); | ||||
| 		// NOLINTEND(cppcoreguidelines-pro-type-cstyle-cast)
 | ||||
| 		ensure(stream.is_open(), "Failed to pack shader asset to {}", destination.string()); | ||||
| 		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); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue