terrain/Terrain2/ShaderTypes.h
Eryn Wells 11b9cba8ac Add a Uniform object for RandomAlgorithm
This object contains several random numbers for the GPU kernel to use when generating random points. This isn't right yet (there are still patterns in the generated data) but it's time to move on...
2018-11-07 16:47:07 -05:00

67 lines
1.4 KiB
Objective-C

//
// ShaderTypes.h
// Terrain2
//
// Created by Eryn Wells on 11/3/18.
// Copyright © 2018 Eryn Wells. All rights reserved.
//
//
// Header containing types and enum constants shared between Metal shaders and Swift/ObjC source
//
#ifndef ShaderTypes_h
#define ShaderTypes_h
#ifdef __METAL_VERSION__
#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
#define NSInteger metal::int32_t
#else
#import <Foundation/Foundation.h>
#endif
#include <simd/simd.h>
typedef NS_ENUM(NSInteger, BufferIndex)
{
BufferIndexMeshPositions = 0,
BufferIndexMeshGenerics = 1,
BufferIndexMeshGridCoords = 2,
BufferIndexUniforms = 3,
};
typedef NS_ENUM(NSInteger, VertexAttribute)
{
VertexAttributePosition = 0,
VertexAttributeTexcoord = 1,
VertexAttributeGridCoord = 2,
};
typedef NS_ENUM(NSInteger, TextureIndex)
{
TextureIndexColor = 0,
};
typedef NS_ENUM(NSInteger, GeneratorTextureIndex)
{
GeneratorTextureIndexIn = 0,
GeneratorTextureIndexOut = 1,
};
typedef struct
{
matrix_float4x4 projectionMatrix;
matrix_float4x4 modelViewMatrix;
} Uniforms;
#define kRandomAlgorithmUniforms_RandomCount (41)
typedef struct {
uint randoms[kRandomAlgorithmUniforms_RandomCount];
} RandomAlgorithmUniforms;
#ifndef __METAL_VERSION__
extern void RandomAlgorithmUniforms_refreshRandoms(RandomAlgorithmUniforms *uniforms);
#endif
#endif /* ShaderTypes_h */