или это то, о чем я изначально думал, однако я не смог этого сделать. PrettyPrint-Override ">
Код: Выделить всё
struct ContentView: View {
var body: some View {
ZStack() {
Content()
PixeleteView()
}
}
}
Код: Выделить всё
struct PixeleteView: View {
var body: some View {
.
.
.
.background(
//
// This is where I want my shader to be
// However instead of this it must change the background of
// this view.
//
// You can think of this like
// Rectangle()
// .fill(.ultraThinMaterial)
//
)
.clipShape(RoundedRectangle(cornerRadius: 50))
}
с .layereffect, применяемым к
// mysahder.metal
Код: Выделить всё
#include
#include
using namespace metal;
[[ stitchable ]] half4 pixellate(float2 position, SwiftUI::Layer layer, float strength) {
float min_strength = max(strength, 0.0001);
float coord_x = min_strength * round(position.x / min_strength);
float coord_y = min_strength * round(position.y / min_strength);
return layer.sample(float2(coord_x, coord_y));
}
Вот пример, когда я запускаю этот
// Пример
Image(systemName: "figure.run.circle.fill")
.font(.system(size: 300))
.layerEffect(ShaderLibrary.pixellate(.float(10)), maxSampleOffset: .zero)
Этот код дает пример на статическом изображении, однако я хочу применить этот эффект к тому, что находится позади. /> И для того, чтобы описать то, что я действительно хочу, здесь - это изображение фигуры того, что я хочу реализовать
, чтобы понять, что я рекомендую взглянуть на изображение
желаемый результат:
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-the-view
Мобильная версия