The Skung Rockification of Ziggy Skungdust and the SIMD's

This commit is contained in:
2024-05-13 01:11:03 +10:00
parent b62cd056b5
commit 6c44476062
40 changed files with 2066 additions and 386 deletions

View File

@ -44,16 +44,10 @@ extension ContentManager
public mutating func create(texture: Image, params: Texture2DParameters = .init()) throws -> Texture2D
{
try texture.pixels.withUnsafeBytes
{
raw in
let data = raw.baseAddress!
let rendTex = try renderer.createTexture(
data: data, width: texture.width, height: texture.height,
filter: params.magFilter, mipMode: params.mipMode)
resources.append(rendTex)
return Texture2D(id: rendTex, width: texture.width, height: texture.height)
}
let rendTex = try renderer.createTexture(image: texture,
filter: params.magFilter, mipMode: params.mipMode)
resources.append(rendTex)
return Texture2D(id: rendTex, width: texture.width, height: texture.height)
}
public func getResource(_ path: String) throws -> URL
@ -153,6 +147,23 @@ extension ContentManager
let renderResource = try self.create(mesh: mesh)
return renderResource as! T
}
if T.self == RenderMesh<VMeshVertex>.self
{
guard let mesh = resource as? Mesh<VMeshVertex> else { throw ContentError.loadFailure }
let renderResource = try self.create(mesh: mesh)
return renderResource as! T
}
if T.self == Image.self
{
guard let image = resource as? Image else { throw ContentError.loadFailure }
return image as! T
}
if T.self == Texture2D.self
{
guard let image = resource as? Image else { throw ContentError.loadFailure }
let texture2D = try self.create(texture: image)
return texture2D as! T
}
throw ContentError.loadFailure
}

View File

@ -3,7 +3,30 @@ import Foundation
public struct Image: Resource
{
let pixels: Data
let width: Int
let height: Int
let data: Data
let format: Format
let width: Int, height: Int
let mipLevels: Int
public enum Format
{
case argb8888, abgr8888
case rgb888, bgr888
//case l8, l16, a8, al88
case s3tc_bc1, s3tc_bc2_premul
case s3tc_bc2, s3tc_bc3_premul
case s3tc_bc3, rgtc_bc4, rgtc_bc5_3dc
}
}
extension Image
{
init(_ data: Data, format: Format, width: Int, height: Int, mipLevels: Int = 0)
{
self.data = data
self.format = format
self.width = width
self.height = height
self.mipLevels = mipLevels
}
}

View File

@ -1,4 +1,5 @@
import OrderedCollections
import Maths
public struct Model<T: Vertex>: Resource

View File

@ -1,4 +1,5 @@
import Foundation
import Maths
import OrderedCollections
@ -25,6 +26,8 @@ public struct ObjModel
public struct ObjMaterial
{
var name: String
var model: IlluminationModel = .lambert
var ambient: Colour = .black
var diffuse: Colour = .white