From 261a768ae5ba2338c6c44b4eac4574b69355cf67 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Wed, 21 Nov 2018 08:57:59 -0700 Subject: [PATCH] Remove RandomGenerator --- Terrain2/Algorithms.swift | 36 ------------------------ Terrain2/ShaderTypes.h | 9 ++++-- Terrain2/Shaders/TerrainAlgorithms.metal | 11 -------- 3 files changed, 7 insertions(+), 49 deletions(-) diff --git a/Terrain2/Algorithms.swift b/Terrain2/Algorithms.swift index 1e0b64f..98dce16 100644 --- a/Terrain2/Algorithms.swift +++ b/Terrain2/Algorithms.swift @@ -104,42 +104,6 @@ class ZeroAlgorithm: Kernel, TerrainGenerator { } } -/// Randomly generate heights that are independent of all others. -class RandomAlgorithm: Kernel, TerrainGenerator { - let name = "Random" - - let needsGPU: Bool = true - - private var uniforms: UnsafeMutablePointer - - init?(device: MTLDevice, library: MTLLibrary) { - let bufferSize = (MemoryLayout.stride & ~0xFF) + 0x100; - guard let buffer = device.makeBuffer(length: bufferSize, options: [.storageModeShared]) else { - print("Couldn't create uniform buffer") - return nil - } - - uniforms = UnsafeMutableRawPointer(buffer.contents()).bindMemory(to: RandomAlgorithmUniforms.self, capacity:1) - - do { - try super.init(device: device, library: library, functionName: "randomKernel", uniformBuffer: buffer) - } catch let e { - print("Couldn't create compute kernel. Error: \(e)") - return nil - } - - updateUniforms() - } - - func updateUniforms() { - RandomAlgorithmUniforms_refreshRandoms(uniforms) - } - - func render(progress: Progress) -> [Float] { - return [] - } -} - /// Implementation of the Diamond-Squares algorithm. /// - https://en.wikipedia.org/wiki/Diamond-square_algorithm public class DiamondSquareGenerator: TerrainGenerator { diff --git a/Terrain2/ShaderTypes.h b/Terrain2/ShaderTypes.h index 5e7f919..6a45da6 100644 --- a/Terrain2/ShaderTypes.h +++ b/Terrain2/ShaderTypes.h @@ -66,8 +66,13 @@ typedef struct { matrix_float4x4 projectionMatrix; matrix_float4x4 modelViewMatrix; matrix_float3x3 normalMatrix; - packed_float2 terrainDimensions; - packed_uint2 terrainSegments; +#ifdef __METAL_VERSION__ + simd::packed_float2 terrainDimensions; + simd::packed_uint2 terrainSegments; +#else + simd_packed_float2 terrainDimensions; + simd_packed_uint2 terrainSegments; +#endif } Uniforms; #endif /* ShaderTypes_h */ diff --git a/Terrain2/Shaders/TerrainAlgorithms.metal b/Terrain2/Shaders/TerrainAlgorithms.metal index 108757b..9b83074 100644 --- a/Terrain2/Shaders/TerrainAlgorithms.metal +++ b/Terrain2/Shaders/TerrainAlgorithms.metal @@ -93,14 +93,3 @@ kernel void zeroKernel(texture2d outTexture [[texture(Gene outTexture.write(0, tid); } -#pragma mark - RandomGenerator - -kernel void randomKernel(texture2d outTexture [[texture(GeneratorTextureIndexOut)]], - constant RandomAlgorithmUniforms &uniforms [[buffer(0)]], - uint2 tid [[thread_position_in_grid]]) -{ - PRNG rng(uniforms.randoms[(tid.x * tid.y) % kRandomAlgorithmUniforms_RandomCount]); - uint r = rng.xorShift(); - float x = float(r * (1.0 / float(UINT_MAX))) * 0.5f; - outTexture.write(x, tid); -}