Skip to content

Instantly share code, notes, and snippets.

@zacharycarter
Created November 5, 2018 22:06
Show Gist options
  • Save zacharycarter/20c34bdecca24ecab2da20402b88168e to your computer and use it in GitHub Desktop.
Save zacharycarter/20c34bdecca24ecab2da20402b88168e to your computer and use it in GitHub Desktop.
import strutils
const sourcePath = currentSourcePath().split({'\\', '/'})[0..^2].join("/")
{.passC: "-I\"" & sourcePath & "/FastNoiseSIMD\"".}
const headerFastNoiseSIMD = sourcePath & "/FastNoiseSIMD/FastNoiseSIMD.h"
{.passC: "-std=c++11".}
{.passC: "-march=core-avx2s".}
{.passC: "-mfma".}
{.passC: "-mavx2".}
{.compile: "nimFastNoiseSIMD/FastNoiseSIMD/FastNoiseSIMD.cpp".}
{.compile: "nimFastNoiseSIMD/FastNoiseSIMD/FastNoiseSIMD_avx2.cpp".}
{.compile: "nimFastNoiseSIMD/FastNoiseSIMD/FastNoiseSIMD_avx512.cpp".}
{.compile: "nimFastNoiseSIMD/FastNoiseSIMD/FastNoiseSIMD_internal.cpp".}
{.compile: "nimFastNoiseSIMD/FastNoiseSIMD/FastNoiseSIMD_neon.cpp".}
{.compile: "nimFastNoiseSIMD/FastNoiseSIMD/FastNoiseSIMD_sse2.cpp".}
{.compile: "nimFastNoiseSIMD/FastNoiseSIMD/FastNoiseSIMD_sse41.cpp".}
const
FN_CELLULAR_INDEX_MAX* = 3
FN_NO_SIMD_FALLBACK* = 0
FN_SSE2* = 1
FN_SSE41* = 2
FN_AVX2* = 3
FN_AVX512* = 4
FN_NEON* = 5
discard "forward decl of FastNoiseVectorSet"
type
FastNoiseSIMD* {.importcpp: "FastNoiseSIMD", header: headerFastNoiseSIMD, bycopy.} = object
NoiseType* {.size: sizeof(cint), importcpp: "FastNoiseSIMD::NoiseType",
header: headerFastNoiseSIMD.} = enum
Value, ValueFractal, Perlin, PerlinFractal, Simplex, SimplexFractal, WhiteNoise,
Cellular, Cubic, CubicFractal
type
FractalType* {.size: sizeof(cint), importcpp: "FastNoiseSIMD::FractalType",
header: headerFastNoiseSIMD.} = enum
FBM, Billow, RigidMulti
type
PerturbType* {.size: sizeof(cint), importcpp: "FastNoiseSIMD::PerturbType",
header: headerFastNoiseSIMD.} = enum
None, Gradient, GradientFractal, Normalise, Gradient_Normalise,
GradientFractal_Normalise
type
CellularDistanceFunction* {.size: sizeof(cint), importcpp: "FastNoiseSIMD::CellularDistanceFunction",
header: headerFastNoiseSIMD.} = enum
Euclidean, Manhattan, Natural
type
CellularReturnType* {.size: sizeof(cint),
importcpp: "FastNoiseSIMD::CellularReturnType",
header: headerFastNoiseSIMD.} = enum
CellValue, Distance, Distance2, Distance2Add, Distance2Sub, Distance2Mul,
Distance2Div, NoiseLookup, Distance2Cave
proc NewFastNoiseSIMD*(seed: cint = 1337): ptr FastNoiseSIMD {.stdcall,
importcpp: "FastNoiseSIMD::NewFastNoiseSIMD(@)", header: headerFastNoiseSIMD.}
proc GetSIMDLevel*(): cint {.stdcall, importcpp: "FastNoiseSIMD::GetSIMDLevel(@)",
header: headerFastNoiseSIMD.}
proc SetSIMDLevel*(level: cint) {.stdcall,
importcpp: "FastNoiseSIMD::SetSIMDLevel(@)",
header: headerFastNoiseSIMD.}
proc FreeNoiseSet*(noiseSet: ptr cfloat) {.stdcall, importcpp: "FastNoiseSIMD::FreeNoiseSet(@)",
header: headerFastNoiseSIMD.}
proc GetEmptySet*(size: cint): ptr cfloat {.stdcall, importcpp: "FastNoiseSIMD::GetEmptySet(@)",
header: headerFastNoiseSIMD.}
proc GetEmptySet*(xSize: cint; ySize: cint; zSize: cint): ptr cfloat {.stdcall,
importcpp: "FastNoiseSIMD::GetEmptySet(@)", header: headerFastNoiseSIMD.}
proc AlignedSize*(size: cint): cint {.stdcall,
importcpp: "FastNoiseSIMD::AlignedSize(@)",
header: headerFastNoiseSIMD.}
proc GetSeed*(this: FastNoiseSIMD): cint {.noSideEffect, stdcall,
importcpp: "GetSeed",
header: headerFastNoiseSIMD.}
proc SetSeed*(this: var FastNoiseSIMD; seed: cint) {.stdcall, importcpp: "SetSeed",
header: headerFastNoiseSIMD.}
proc SetFrequency*(this: var FastNoiseSIMD; frequency: cfloat) {.stdcall,
importcpp: "SetFrequency", header: headerFastNoiseSIMD.}
proc SetNoiseType*(this: var FastNoiseSIMD; noiseType: NoiseType) {.stdcall,
importcpp: "SetNoiseType", header: headerFastNoiseSIMD.}
proc SetAxisScales*(this: var FastNoiseSIMD; xScale: cfloat; yScale: cfloat;
zScale: cfloat) {.stdcall, importcpp: "SetAxisScales",
header: headerFastNoiseSIMD.}
proc SetFractalOctaves*(this: var FastNoiseSIMD; octaves: cint) {.stdcall,
importcpp: "SetFractalOctaves", header: headerFastNoiseSIMD.}
proc SetFractalLacunarity*(this: var FastNoiseSIMD; lacunarity: cfloat) {.stdcall,
importcpp: "SetFractalLacunarity", header: headerFastNoiseSIMD.}
proc SetFractalGain*(this: var FastNoiseSIMD; gain: cfloat) {.stdcall,
importcpp: "SetFractalGain", header: headerFastNoiseSIMD.}
proc SetFractalType*(this: var FastNoiseSIMD; fractalType: FractalType) {.stdcall,
importcpp: "SetFractalType", header: headerFastNoiseSIMD.}
proc SetCellularReturnType*(this: var FastNoiseSIMD;
cellularReturnType: CellularReturnType) {.stdcall,
importcpp: "SetCellularReturnType", header: headerFastNoiseSIMD.}
proc SetCellularDistanceFunction*(this: var FastNoiseSIMD; cellularDistanceFunction: CellularDistanceFunction) {.
stdcall, importcpp: "SetCellularDistanceFunction", header: headerFastNoiseSIMD.}
proc SetCellularNoiseLookupType*(this: var FastNoiseSIMD;
cellularNoiseLookupType: NoiseType) {.stdcall,
importcpp: "SetCellularNoiseLookupType", header: headerFastNoiseSIMD.}
proc SetCellularNoiseLookupFrequency*(this: var FastNoiseSIMD;
cellularNoiseLookupFrequency: cfloat) {.
stdcall, importcpp: "SetCellularNoiseLookupFrequency",
header: headerFastNoiseSIMD.}
proc SetCellularDistance2Indicies*(this: var FastNoiseSIMD;
cellularDistanceIndex0: cint;
cellularDistanceIndex1: cint) {.stdcall,
importcpp: "SetCellularDistance2Indicies", header: headerFastNoiseSIMD.}
proc SetCellularJitter*(this: var FastNoiseSIMD; cellularJitter: cfloat) {.stdcall,
importcpp: "SetCellularJitter", header: headerFastNoiseSIMD.}
proc SetPerturbType*(this: var FastNoiseSIMD; perturbType: PerturbType) {.stdcall,
importcpp: "SetPerturbType", header: headerFastNoiseSIMD.}
proc SetPerturbAmp*(this: var FastNoiseSIMD; perturbAmp: cfloat) {.stdcall,
importcpp: "SetPerturbAmp", header: headerFastNoiseSIMD.}
proc SetPerturbFrequency*(this: var FastNoiseSIMD; perturbFrequency: cfloat) {.
stdcall, importcpp: "SetPerturbFrequency", header: headerFastNoiseSIMD.}
proc SetPerturbFractalOctaves*(this: var FastNoiseSIMD; perturbOctaves: cint) {.
stdcall, importcpp: "SetPerturbFractalOctaves", header: headerFastNoiseSIMD.}
proc SetPerturbFractalLacunarity*(this: var FastNoiseSIMD; perturbLacunarity: cfloat) {.
stdcall, importcpp: "SetPerturbFractalLacunarity", header: headerFastNoiseSIMD.}
proc SetPerturbFractalGain*(this: var FastNoiseSIMD; perturbGain: cfloat) {.stdcall,
importcpp: "SetPerturbFractalGain", header: headerFastNoiseSIMD.}
proc SetPerturbNormaliseLength*(this: var FastNoiseSIMD;
perturbNormaliseLength: cfloat) {.stdcall,
importcpp: "SetPerturbNormaliseLength", header: headerFastNoiseSIMD.}
proc GetVectorSet*(xSize: cint; ySize: cint; zSize: cint): ptr FastNoiseVectorSet {.
stdcall, importcpp: "FastNoiseSIMD::GetVectorSet(@)",
header: headerFastNoiseSIMD.}
proc GetSamplingVectorSet*(sampleScale: cint; xSize: cint; ySize: cint; zSize: cint): ptr FastNoiseVectorSet {.
stdcall, importcpp: "FastNoiseSIMD::GetSamplingVectorSet(@)",
header: headerFastNoiseSIMD.}
proc FillVectorSet*(vectorSet: ptr FastNoiseVectorSet; xSize: cint; ySize: cint;
zSize: cint) {.stdcall,
importcpp: "FastNoiseSIMD::FillVectorSet(@)",
header: headerFastNoiseSIMD.}
proc FillSamplingVectorSet*(vectorSet: ptr FastNoiseVectorSet; sampleScale: cint;
xSize: cint; ySize: cint; zSize: cint) {.stdcall,
importcpp: "FastNoiseSIMD::FillSamplingVectorSet(@)",
header: headerFastNoiseSIMD.}
proc GetNoiseSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint; zStart: cint;
xSize: cint; ySize: cint; zSize: cint; scaleModifier: cfloat = 1.0): ptr cfloat {.
stdcall, importcpp: "GetNoiseSet", header: headerFastNoiseSIMD.}
proc FillNoiseSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0) {.stdcall, importcpp: "FillNoiseSet",
header: headerFastNoiseSIMD.}
proc FillNoiseSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillNoiseSet", header: headerFastNoiseSIMD.}
proc GetSampledNoiseSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint;
zStart: cint; xSize: cint; ySize: cint; zSize: cint;
sampleScale: cint): ptr cfloat {.stdcall,
importcpp: "GetSampledNoiseSet", header: headerFastNoiseSIMD.}
proc FillSampledNoiseSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint;
zSize: cint; sampleScale: cint) {.stdcall,
importcpp: "FillSampledNoiseSet", header: headerFastNoiseSIMD.}
proc FillSampledNoiseSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillSampledNoiseSet", header: headerFastNoiseSIMD.}
proc GetWhiteNoiseSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint;
zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0): ptr cfloat {.stdcall,
importcpp: "GetWhiteNoiseSet", header: headerFastNoiseSIMD.}
proc FillWhiteNoiseSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint;
zSize: cint; scaleModifier: cfloat = 1.0) {.stdcall,
importcpp: "FillWhiteNoiseSet", header: headerFastNoiseSIMD.}
proc FillWhiteNoiseSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillWhiteNoiseSet", header: headerFastNoiseSIMD.}
proc GetValueSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint; zStart: cint;
xSize: cint; ySize: cint; zSize: cint; scaleModifier: cfloat = 1.0): ptr cfloat {.
stdcall, importcpp: "GetValueSet", header: headerFastNoiseSIMD.}
proc GetValueFractalSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint;
zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0): ptr cfloat {.stdcall,
importcpp: "GetValueFractalSet", header: headerFastNoiseSIMD.}
proc FillValueSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0) {.stdcall, importcpp: "FillValueSet",
header: headerFastNoiseSIMD.}
proc FillValueFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint;
zSize: cint; scaleModifier: cfloat = 1.0) {.stdcall,
importcpp: "FillValueFractalSet", header: headerFastNoiseSIMD.}
proc FillValueSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillValueSet", header: headerFastNoiseSIMD.}
proc FillValueFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillValueFractalSet", header: headerFastNoiseSIMD.}
proc GetPerlinSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint; zStart: cint;
xSize: cint; ySize: cint; zSize: cint; scaleModifier: cfloat = 1.0): ptr cfloat {.
stdcall, importcpp: "GetPerlinSet", header: headerFastNoiseSIMD.}
proc GetPerlinFractalSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint;
zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0): ptr cfloat {.stdcall,
importcpp: "GetPerlinFractalSet", header: headerFastNoiseSIMD.}
proc FillPerlinSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0) {.stdcall,
importcpp: "FillPerlinSet", header: headerFastNoiseSIMD.}
proc FillPerlinFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint;
zSize: cint; scaleModifier: cfloat = 1.0) {.stdcall,
importcpp: "FillPerlinFractalSet", header: headerFastNoiseSIMD.}
proc FillPerlinSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillPerlinSet", header: headerFastNoiseSIMD.}
proc FillPerlinFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillPerlinFractalSet", header: headerFastNoiseSIMD.}
proc GetSimplexSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint; zStart: cint;
xSize: cint; ySize: cint; zSize: cint; scaleModifier: cfloat = 1.0): ptr cfloat {.
stdcall, importcpp: "GetSimplexSet", header: headerFastNoiseSIMD.}
proc GetSimplexFractalSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint;
zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0): ptr cfloat {.stdcall,
importcpp: "GetSimplexFractalSet", header: headerFastNoiseSIMD.}
proc FillSimplexSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0) {.stdcall,
importcpp: "FillSimplexSet", header: headerFastNoiseSIMD.}
proc FillSimplexFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
xStart: cint; yStart: cint; zStart: cint; xSize: cint;
ySize: cint; zSize: cint; scaleModifier: cfloat = 1.0) {.
stdcall, importcpp: "FillSimplexFractalSet", header: headerFastNoiseSIMD.}
proc FillSimplexSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillSimplexSet", header: headerFastNoiseSIMD.}
proc FillSimplexFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet;
xOffset: cfloat = 0.0; yOffset: cfloat = 0.0;
zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillSimplexFractalSet", header: headerFastNoiseSIMD.}
proc GetCellularSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint; zStart: cint;
xSize: cint; ySize: cint; zSize: cint; scaleModifier: cfloat = 1.0): ptr cfloat {.
stdcall, importcpp: "GetCellularSet", header: headerFastNoiseSIMD.}
proc FillCellularSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0) {.stdcall,
importcpp: "FillCellularSet", header: headerFastNoiseSIMD.}
proc FillCellularSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillCellularSet", header: headerFastNoiseSIMD.}
proc GetCubicSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint; zStart: cint;
xSize: cint; ySize: cint; zSize: cint; scaleModifier: cfloat = 1.0): ptr cfloat {.
stdcall, importcpp: "GetCubicSet", header: headerFastNoiseSIMD.}
proc GetCubicFractalSet*(this: var FastNoiseSIMD; xStart: cint; yStart: cint;
zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0): ptr cfloat {.stdcall,
importcpp: "GetCubicFractalSet", header: headerFastNoiseSIMD.}
proc FillCubicSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint; zSize: cint;
scaleModifier: cfloat = 1.0) {.stdcall, importcpp: "FillCubicSet",
header: headerFastNoiseSIMD.}
proc FillCubicFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat; xStart: cint;
yStart: cint; zStart: cint; xSize: cint; ySize: cint;
zSize: cint; scaleModifier: cfloat = 1.0) {.stdcall,
importcpp: "FillCubicFractalSet", header: headerFastNoiseSIMD.}
proc FillCubicSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillCubicSet", header: headerFastNoiseSIMD.}
proc FillCubicFractalSet*(this: var FastNoiseSIMD; noiseSet: ptr cfloat;
vectorSet: ptr FastNoiseVectorSet; xOffset: cfloat = 0.0;
yOffset: cfloat = 0.0; zOffset: cfloat = 0.0) {.stdcall,
importcpp: "FillCubicFractalSet", header: headerFastNoiseSIMD.}
proc destroyFastNoiseSIMD*(this: var FastNoiseSIMD) {.stdcall,
importcpp: "#.~FastNoiseSIMD()", header: headerFastNoiseSIMD.}
type
FastNoiseVectorSet* {.importcpp: "FastNoiseVectorSet",
header: headerFastNoiseSIMD, bycopy.} = object
size* {.importc: "size".}: cint = -1
xSet* {.importc: "xSet".}: ptr cfloat = nullptr
ySet* {.importc: "ySet".}: ptr cfloat = nullptr
zSet* {.importc: "zSet".}: ptr cfloat = nullptr
sampleScale* {.importc: "sampleScale".}: cint = 0
sampleSizeX* {.importc: "sampleSizeX".}: cint = -1
sampleSizeY* {.importc: "sampleSizeY".}: cint = -1
sampleSizeZ* {.importc: "sampleSizeZ".}: cint = -1
proc constructFastNoiseVectorSet*(): FastNoiseVectorSet {.stdcall, constructor,
importcpp: "FastNoiseVectorSet(@)", header: headerFastNoiseSIMD.}
proc constructFastNoiseVectorSet*(_size: cint): FastNoiseVectorSet {.stdcall,
constructor, importcpp: "FastNoiseVectorSet(@)", header: headerFastNoiseSIMD.}
proc destroyFastNoiseVectorSet*(this: var FastNoiseVectorSet) {.stdcall,
importcpp: "#.~FastNoiseVectorSet()", header: headerFastNoiseSIMD.}
proc Free*(this: var FastNoiseVectorSet) {.stdcall, importcpp: "Free",
header: headerFastNoiseSIMD.}
proc SetSize*(this: var FastNoiseVectorSet; _size: cint) {.stdcall,
importcpp: "SetSize", header: headerFastNoiseSIMD.}
[n.global]
output = nimFastNoiseSIMD
[n.include]
nimFastNoiseSIMD/FastNoiseSIMD
[n.prepare]
gitremote = "https://github.com/Auburns/FastNoiseSIMD"
gitsparse = """
FastNoiseSIMD/*
"""
[FastNoiseSIMD.h]
preprocess = true
defines = true
recurse = true
flags = "--cpp --stdcall"
ppflags-osx = "-std=c++11 -march=core-avx2 -mfma -mavx2"
pragma-osx = "passC: \"-std=c++11\""
pragma-osx.arch = "passC: \"-march=core-avx2s\""
pragma-osx.mfa = "passC: \"-mfma\""
pragma-osx.avx2 = "passC: \"-mavx2\""
compile = nimFastNoiseSIMD/FastNoiseSIMD
rename = "fnsimd.nim"
discard "forward decl of FastNoiseVectorSet"
...
type
FastNoiseVectorSet* {.importcpp: "FastNoiseVectorSet",
header: headerFastNoiseSIMD, bycopy.} = object
size* {.importc: "size".}: cint = -1
xSet* {.importc: "xSet".}: ptr cfloat = nullptr
ySet* {.importc: "ySet".}: ptr cfloat = nullptr
zSet* {.importc: "zSet".}: ptr cfloat = nullptr
sampleScale* {.importc: "sampleScale".}: cint = 0
sampleSizeX* {.importc: "sampleSizeX".}: cint = -1
sampleSizeY* {.importc: "sampleSizeY".}: cint = -1
sampleSizeZ* {.importc: "sampleSizeZ".}: cint = -1
proc constructFastNoiseVectorSet*(_size: cint): FastNoiseVectorSet {.stdcall,
constructor, importcpp: "FastNoiseVectorSet(@)", header: headerFastNoiseSIMD.}
...
proc SetSize*(this: var FastNoiseVectorSet; _size: cint) {.stdcall,
importcpp: "SetSize", header: headerFastNoiseSIMD.}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment