Swiftui, как применить шейдер «что угодно» стоит за обзоромIOS

Программируем под IOS
Ответить
Anonymous
 Swiftui, как применить шейдер «что угодно» стоит за обзором

Сообщение Anonymous »

Я пишу программу, в которой есть несколько изображений, на которых вы можете прокрутить, и у меня также есть прямоугольный вид, который называется PixeleteView , где я хочу пикселировать контент позади, легко применить мой шейдер к представлению и работе, однако я хочу пикселатировать изображения, не применяя мой шейдер к изображениям. Фоновое содержание текущего представления, означающее, что приобретение фонового содержимого перерисовало его на текущем фоне и применив эффект к нему
или это то, о чем я изначально думал, однако я не смог этого сделать. 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));
}
Итак, я считаю, что мог бы представить представление о том, что я пытаюсь сделать вместо использования rectangle (). fill (.ultrathinmaterial) Я хочу реализовать свой собственный эффект
Вот пример, когда я запускаю этот
// Пример
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»