by Anonymous » Yesterday, 01:01
Ich schreibe ein Programm, das einige Bilder enthält, in denen Sie scrollen können, und ich habe auch eine rechteckige Ansicht, die als Pixeletteview bezeichnet wird. Wenn ich den Inhalt dahinter pixeln möchte, ist es leicht, meinen Shader auf die Ansicht anzuwenden und zu arbeiten. Der Hintergrundinhalt der aktuellen Ansicht bedeutet, dass der Hintergrundinhalt im aktuellen Hintergrund neu gezogen wird und den Effekt darauf angewendet wird. PrettyPrint-Override ">
Code: Select all
struct ContentView: View {
var body: some View {
ZStack() {
Content()
PixeleteView()
}
}
}
Inhalt ist nur ein Bildlaufbilder und Texte, es kann jedoch irgendetwas sein.
Code: Select all
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))
}
Und mein Shader ist eine einfache Metalldatei, um den Inhalt
mit .Layereffect auf
// mysahder.metal
">
zu prüfen.
Code: Select all
#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));
}
Ich glaube also, ich könnte die Idee bringen, was ich versuche, anstatt Rechteck () zu verwenden (.ultrathinmaterial)
Ich möchte meinen eigenen Effekt implementieren.
Code: Select all
Image(systemName: "figure.run.circle.fill")
.font(.system(size: 300))
.layerEffect(ShaderLibrary.pixellate(.float(10)), maxSampleOffset: .zero)
Dieser Code erzeugt das Beispiel für das statische Bild, aber
ich möchte diesen Effekt auf alles anwenden, was dahinter steckt. /> Und um zu beschreiben, was ich hier wirklich möchte, ist die Figma -Darstellung dessen, was ich implementieren möchte, um zu verstehen, dass ich einen Blick auf das Bild ansehen kann. /> < /p>
Ich möchte diesen Effekt erneut an vielen Stellen wiederverwenden, damit ich diese nicht wirklich auf individuelle Ansicht in Inhalt anwenden möchte. Ich glaube, es muss weniger komplexe Möglichkeiten geben, dies zu erreichen.
Ich möchte jedoch, dass es den Inhalt dahinter manipuliert/verzerrt. Dieser Teil ist wichtig.>
Ich schreibe ein Programm, das einige Bilder enthält, in denen Sie scrollen können, und ich habe auch eine rechteckige Ansicht, die als Pixeletteview bezeichnet wird. Wenn ich den Inhalt dahinter pixeln möchte, ist es leicht, meinen Shader auf die Ansicht anzuwenden und zu arbeiten. Der Hintergrundinhalt der aktuellen Ansicht bedeutet, dass der Hintergrundinhalt im aktuellen Hintergrund neu gezogen wird und den Effekt darauf angewendet wird. PrettyPrint-Override ">[code]struct ContentView: View {
var body: some View {
ZStack() {
Content()
PixeleteView()
}
}
}
[/code]
Inhalt ist nur ein Bildlaufbilder und Texte, es kann jedoch irgendetwas sein.[code]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))
}
[/code]
Und mein Shader ist eine einfache Metalldatei, um den Inhalt
mit .Layereffect auf
// mysahder.metal
">
zu prüfen.[code]#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));
}
[/code]
Ich glaube also, ich könnte die Idee bringen, was ich versuche, anstatt Rechteck () zu verwenden (.ultrathinmaterial) [url=viewtopic.php?t=14917]Ich möchte[/url] meinen eigenen Effekt implementieren.[code]Image(systemName: "figure.run.circle.fill")
.font(.system(size: 300))
.layerEffect(ShaderLibrary.pixellate(.float(10)), maxSampleOffset: .zero)
[/code]
Dieser Code erzeugt das Beispiel für das statische Bild, aber [url=viewtopic.php?t=14917]ich möchte[/url] diesen Effekt auf alles anwenden, was dahinter steckt. /> Und um zu beschreiben, was ich hier wirklich möchte, ist die Figma -Darstellung dessen, was ich implementieren möchte, um zu verstehen, dass ich einen Blick auf das Bild ansehen kann. /> < /p>
Ich möchte diesen Effekt erneut an vielen Stellen wiederverwenden, damit ich diese nicht wirklich auf individuelle Ansicht in Inhalt anwenden möchte. Ich glaube, es muss weniger komplexe Möglichkeiten geben, dies zu erreichen. [url=viewtopic.php?t=14917]Ich möchte[/url] jedoch, dass es den Inhalt dahinter manipuliert/verzerrt. Dieser Teil ist wichtig.>