[Metaballs] Fallout from changes to MetaballsKit
This commit is contained in:
parent
48365abee3
commit
1f2469f686
3 changed files with 12 additions and 9 deletions
|
@ -15,7 +15,7 @@ enum RendererError: Error {
|
||||||
}
|
}
|
||||||
|
|
||||||
protocol RendererDelegate {
|
protocol RendererDelegate {
|
||||||
var renderSize: CGSize { get set }
|
var renderSize: Size { get set }
|
||||||
var field: Field { get }
|
var field: Field { get }
|
||||||
var metalView: MTKView { get }
|
var metalView: MTKView { get }
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ class Renderer: NSObject, MTKViewDelegate {
|
||||||
/// MARK: - MTKViewDelegate
|
/// MARK: - MTKViewDelegate
|
||||||
|
|
||||||
func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
|
func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) {
|
||||||
delegate.renderSize = size
|
delegate.renderSize = Size(size: size)
|
||||||
}
|
}
|
||||||
|
|
||||||
func draw(in view: MTKView) {
|
func draw(in view: MTKView) {
|
||||||
|
|
|
@ -24,7 +24,11 @@ typedef struct {
|
||||||
float2 textureCoordinate;
|
float2 textureCoordinate;
|
||||||
} RasterizerData;
|
} RasterizerData;
|
||||||
|
|
||||||
typedef int3 Parameters;
|
typedef struct {
|
||||||
|
short2 size;
|
||||||
|
ushort numberOfBalls;
|
||||||
|
} Parameters;
|
||||||
|
|
||||||
typedef float3 Ball;
|
typedef float3 Ball;
|
||||||
|
|
||||||
vertex RasterizerData
|
vertex RasterizerData
|
||||||
|
@ -45,8 +49,7 @@ sampleToColorShader(RasterizerData in [[stage_in]],
|
||||||
constant Parameters& parameters [[buffer(0)]],
|
constant Parameters& parameters [[buffer(0)]],
|
||||||
constant Ball* balls [[buffer(1)]])
|
constant Ball* balls [[buffer(1)]])
|
||||||
{
|
{
|
||||||
const uint numberOfBalls = parameters.z;
|
const float sample = sampleAtPoint(in.position.xy, balls, parameters.numberOfBalls);
|
||||||
const float sample = sampleAtPoint(in.position.xy, balls, numberOfBalls);
|
|
||||||
|
|
||||||
const float target = 1.0;
|
const float target = 1.0;
|
||||||
// const float variange = 0.08;
|
// const float variange = 0.08;
|
||||||
|
@ -56,7 +59,7 @@ sampleToColorShader(RasterizerData in [[stage_in]],
|
||||||
if (sample > target) {
|
if (sample > target) {
|
||||||
const float3 left = float3(0.50, 0.79, 1.00);
|
const float3 left = float3(0.50, 0.79, 1.00);
|
||||||
const float3 right = float3(0.88, 0.50, 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;
|
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);
|
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 {
|
} else {
|
||||||
|
|
|
@ -11,9 +11,9 @@ import MetalKit
|
||||||
import MetaballsKit
|
import MetaballsKit
|
||||||
|
|
||||||
class ViewController: NSViewController, RendererDelegate {
|
class ViewController: NSViewController, RendererDelegate {
|
||||||
internal var field = Field(size: CGSize()) {
|
internal var field = Field(size: Size()) {
|
||||||
didSet {
|
didSet {
|
||||||
field.size = metalView.drawableSize
|
field.size = Size(size: metalView.drawableSize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ class ViewController: NSViewController, RendererDelegate {
|
||||||
|
|
||||||
// MARK: - RendererDelegate
|
// MARK: - RendererDelegate
|
||||||
|
|
||||||
var renderSize: CGSize {
|
var renderSize: Size {
|
||||||
get {
|
get {
|
||||||
return field.size
|
return field.size
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue