[Metaballs] Fallout from changes to MetaballsKit

This commit is contained in:
Eryn Wells 2017-08-06 11:40:35 -07:00
parent 48365abee3
commit 1f2469f686
3 changed files with 12 additions and 9 deletions

View file

@ -15,7 +15,7 @@ enum RendererError: Error {
}
protocol RendererDelegate {
var renderSize: CGSize { get set }
var renderSize: Size { get set }
var field: Field { get }
var metalView: MTKView { get }
}
@ -68,7 +68,7 @@ class Renderer: NSObject, MTKViewDelegate {
/// MARK: - MTKViewDelegate
func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
delegate.renderSize = size
delegate.renderSize = Size(size: size)
}
func draw(in view: MTKView) {

View file

@ -24,7 +24,11 @@ typedef struct {
float2 textureCoordinate;
} RasterizerData;
typedef int3 Parameters;
typedef struct {
short2 size;
ushort numberOfBalls;
} Parameters;
typedef float3 Ball;
vertex RasterizerData
@ -45,8 +49,7 @@ sampleToColorShader(RasterizerData in [[stage_in]],
constant Parameters& parameters [[buffer(0)]],
constant Ball* balls [[buffer(1)]])
{
const uint numberOfBalls = parameters.z;
const float sample = sampleAtPoint(in.position.xy, balls, numberOfBalls);
const float sample = sampleAtPoint(in.position.xy, balls, parameters.numberOfBalls);
const float target = 1.0;
// const float variange = 0.08;
@ -56,7 +59,7 @@ sampleToColorShader(RasterizerData in [[stage_in]],
if (sample > target) {
const float3 left = float3(0.50, 0.79, 1.00);
const float3 right = float3(0.88, 0.50, 1.00);
const float blend = in.position.x / parameters.x;
const float blend = in.position.x / parameters.size.x;
const float invBlend = 1.0 - blend;
out = float4((blend * left.x + invBlend * right.x) / 2.0, (blend * left.y + invBlend * right.y) / 2.0, (blend * left.z + invBlend * right.z) / 2.0, 1.0);
} else {

View file

@ -11,9 +11,9 @@ import MetalKit
import MetaballsKit
class ViewController: NSViewController, RendererDelegate {
internal var field = Field(size: CGSize()) {
internal var field = Field(size: Size()) {
didSet {
field.size = metalView.drawableSize
field.size = Size(size: metalView.drawableSize)
}
}
@ -73,7 +73,7 @@ class ViewController: NSViewController, RendererDelegate {
// MARK: - RendererDelegate
var renderSize: CGSize {
var renderSize: Size {
get {
return field.size
}