From ca6979236c0e1b3660cdfd63b8e81a70d56fa858 Mon Sep 17 00:00:00 2001 From: Blazej Kustra Date: Sun, 26 Oct 2025 22:27:05 +0100 Subject: [PATCH] feat: add Blur component --- example/assets/components/blur.png | Bin 0 -> 56610 bytes example/assets/spongebob.png | Bin 0 -> 70245 bytes example/src/App.tsx | 2 + example/src/screens/Blur/BlurStaticScreen.tsx | 166 ++++++++++++ .../src/screens/Blur/BlurWithTextScreen.tsx | 222 +++++++++++++++ example/src/screens/HomeScreen.tsx | 8 + example/src/types.ts | 1 + src/components/Blur/index.tsx | 256 ++++++++++++++++++ src/components/Blur/shader.ts | 30 ++ src/index.tsx | 2 + 10 files changed, 687 insertions(+) create mode 100644 example/assets/components/blur.png create mode 100644 example/assets/spongebob.png create mode 100644 example/src/screens/Blur/BlurStaticScreen.tsx create mode 100644 example/src/screens/Blur/BlurWithTextScreen.tsx create mode 100644 src/components/Blur/index.tsx create mode 100644 src/components/Blur/shader.ts diff --git a/example/assets/components/blur.png b/example/assets/components/blur.png new file mode 100644 index 0000000000000000000000000000000000000000..95121f1cd828b25a00e93b1af8441d116bb7dfcb GIT binary patch literal 56610 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⪙+0&?wvRPHB?N{N{~C3k}bMfq8K)A2KLtdgQ!~ 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

0guRE@7ig@R;VHvp@u>H8` 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 z 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

KQSL+_4H%WndPa zDVNI}%fKiT6%d~DQeQ9NTO1+{_q!DfRutd|fy6~`&q;U!)p-nV5E5x_q|l0KLXep_ z71!@EANmvbD7ul4+Y~==iFR@r>c5VmsXSE!2NN4o7Q_|_$hZ>+2@@)sV}SSu%3|Vc z`I+B-b;cwkBZNRD019i4W9=U9)%P4$aZE%xOgTzAE!?7i48yxsyVc4>!pc|Nmix&j zwLRR#6_pvoTdhW4n{)UKd>S2~ao}1&v+W=zEQ>0PqSZxfkQ-zM=opM%Ru^+5#oiotA4}*oSsGTD&wg#C*s6@ zjqms&)tE_HEXIAE2^J0Hjxi-x6LP_#dweHRhXJ81OXCg@)b@neT#Ri z;4K~w?-z23cQ;dnpu==$QS0B zwT@oljL`vTbxa53L?hm6SwU{_81Vek z3>G)zws9J_2-Gn`wY;%@gmXRoZXD*Db^>BsZV2yOSV3bXbL_N-*x|%D#GIPBe?Q}Na-LYSDgK~mgjpz70@iX$;-FavK4bo^f z&uErzRfI!a0qVqd#PBNNSTcb7MzA^@w>oBN=7@jf`fm4T;uts(#Xd6z(y6wonFa2K z7#=smFpmLmJXhX`I3pqQPTiUzHi%wTK7proVjm-D9O=0@|JsnOx( zE@>(o*Nvi1#pY<$urVHffK~j(SN%NO z?GIvA=X%xkK>UHY9AbtYwS4rq`-1Sae{YxWO$%D$n6H;q;=n;XD>SY(?}~FU=NH#_ zXUfY;jHiU5?L9ijKE}_Z8PAqC{oIQ(%VGGprmJcqM5O9aNTOtz6DhB6#q?-?N))XT z%L<7zPiW_`D8AV?cG3pC{hMJMmn;~2^P^pOD;VXJi|p6ll{{7ro)FKBKni~qQl-y(F>tP zOds|Rx8<{4c#{6y_}b{nh43q#mvb2W;vB15FEcfl0i2;OF&uvJn|H_Kz1sFMKf?WA Xita(I812{G00000NkvXXu0mjfY=6YF literal 0 HcmV?d00001 diff --git a/example/src/App.tsx b/example/src/App.tsx index 69e9f67..4eec379 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -18,6 +18,7 @@ import CalicoSwirlStaticScreen from './screens/CalicoSwirl/CalicoSwirlStaticScre import DesertStaticScreen from './screens/Desert/DesertStaticScreen'; import HoloStaticScreen from './screens/Holo/HoloStaticScreen'; import GlitterStaticScreen from './screens/Glitter/GlitterStaticScreen'; +import BlurStaticScreen from './screens/Blur/BlurStaticScreen'; import type { RootStackParamList } from './types'; const Stack = createNativeStackNavigator(); @@ -79,6 +80,7 @@ export default function App() { + ); diff --git a/example/src/screens/Blur/BlurStaticScreen.tsx b/example/src/screens/Blur/BlurStaticScreen.tsx new file mode 100644 index 0000000..2a23475 --- /dev/null +++ b/example/src/screens/Blur/BlurStaticScreen.tsx @@ -0,0 +1,166 @@ +import { + View, + Text, + StyleSheet, + StatusBar, + ScrollView, + Dimensions, +} from 'react-native'; +import { Blur } from 'react-native-backgrounds'; +import { Header } from '../../components/Header'; + +const { width } = Dimensions.get('window'); +const CARD_WIDTH = width - 80; + +type BlurConfig = { + id: string; + name: string; + filterSize: number; + description: string; +}; + +const BLUR_PRESETS: BlurConfig[] = [ + { + id: 'subtle', + name: 'Subtle Blur', + filterSize: 5, + description: 'Light blur effect', + }, + { + id: 'medium', + name: 'Medium Blur', + filterSize: 20, + description: 'Balanced blur effect', + }, + { + id: 'strong', + name: 'Strong Blur', + filterSize: 40, + description: 'Heavy blur effect', + }, + { + id: 'extreme', + name: 'Extreme Blur', + filterSize: 100, + description: 'Maximum blur effect', + }, +]; + +export default function BlurStaticScreen() { + return ( + + + +

+ + + {BLUR_PRESETS.map((preset) => ( + + + + + + {preset.name} + {preset.description} + + + Filter Size: + {preset.filterSize}px + + + + + ))} + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#000', + }, + scrollView: { + flex: 1, + }, + scrollContent: { + padding: 20, + paddingBottom: 40, + }, + card: { + width: CARD_WIDTH, + alignSelf: 'center', + backgroundColor: '#111', + borderRadius: 20, + padding: 16, + marginBottom: 24, + borderWidth: 1, + borderColor: '#252525', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 4, + }, + shadowOpacity: 0.4, + shadowRadius: 12, + elevation: 6, + }, + blurContainer: { + width: '100%', + height: 220, + borderRadius: 14, + overflow: 'hidden', + marginBottom: 16, + }, + blur: { + width: '100%', + height: '100%', + }, + cardInfo: { + paddingHorizontal: 4, + }, + cardTitle: { + fontSize: 20, + fontWeight: '700', + color: '#fff', + marginBottom: 8, + letterSpacing: -0.3, + }, + description: { + fontSize: 14, + color: '#aaa', + marginBottom: 12, + lineHeight: 20, + }, + detailsGrid: { + flexDirection: 'row', + flexWrap: 'wrap', + gap: 12, + }, + detailItem: { + flex: 1, + minWidth: '45%', + }, + detailLabel: { + fontSize: 12, + color: '#666', + marginBottom: 4, + fontWeight: '600', + textTransform: 'uppercase', + letterSpacing: 0.5, + }, + detailValue: { + fontSize: 14, + color: '#aaa', + fontWeight: '500', + }, +}); diff --git a/example/src/screens/Blur/BlurWithTextScreen.tsx b/example/src/screens/Blur/BlurWithTextScreen.tsx new file mode 100644 index 0000000..44c958a --- /dev/null +++ b/example/src/screens/Blur/BlurWithTextScreen.tsx @@ -0,0 +1,222 @@ +import { View, Text, StyleSheet, StatusBar } from 'react-native'; +import { Blur } from 'react-native-backgrounds'; +import { Header } from '../../components/Header'; + +export default function BlurWithTextScreen() { + return ( + + + +
+ + + {/* Card with blurred background */} + + + + + + {/* Text overlay on top of blur */} + + Frosted Glass Effect + iOS-style blur with overlay + + + This demonstrates how to create a frosted glass effect by + combining a blurred background image with text content overlaid on + top. + + + + + 40px + Blur Radius + + + + GPU + Accelerated + + + + 60fps + Performance + + + + + + {/* Another example with different styling */} + + + + + + + + ✨ PREMIUM + + Light Blur + Subtle background effect + + With a lighter blur (20px), more of the background image is + visible while still creating visual depth and hierarchy. + + + + + {/* Heavy blur example */} + + + + + + + 🌊 + Heavy Blur + Strong background softening + + Heavy blur (100px) creates an almost abstract background, perfect + for keeping focus on the text content. + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#000', + }, + content: { + flex: 1, + padding: 20, + gap: 20, + }, + card: { + height: 250, + borderRadius: 20, + overflow: 'hidden', + position: 'relative', + borderWidth: 1, + borderColor: '#333', + }, + blurBackground: { + position: 'absolute', + width: '100%', + height: '100%', + }, + blur: { + width: '100%', + height: '100%', + }, + textOverlay: { + flex: 1, + padding: 24, + justifyContent: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.3)', // Semi-transparent overlay + }, + title: { + fontSize: 28, + fontWeight: '800', + color: '#fff', + marginBottom: 8, + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: { width: 0, height: 2 }, + textShadowRadius: 10, + }, + subtitle: { + fontSize: 16, + color: '#ddd', + marginBottom: 16, + fontWeight: '500', + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: { width: 0, height: 1 }, + textShadowRadius: 5, + }, + description: { + fontSize: 14, + color: '#ccc', + lineHeight: 20, + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: { width: 0, height: 1 }, + textShadowRadius: 5, + }, + divider: { + height: 1, + backgroundColor: 'rgba(255, 255, 255, 0.2)', + marginVertical: 16, + }, + statsContainer: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-around', + marginTop: 16, + backgroundColor: 'rgba(255, 255, 255, 0.1)', + borderRadius: 12, + padding: 16, + }, + statItem: { + alignItems: 'center', + }, + statValue: { + fontSize: 24, + fontWeight: '800', + color: '#fff', + marginBottom: 4, + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: { width: 0, height: 2 }, + textShadowRadius: 5, + }, + statLabel: { + fontSize: 12, + color: '#bbb', + textTransform: 'uppercase', + letterSpacing: 0.5, + fontWeight: '600', + }, + statDivider: { + width: 1, + height: 40, + backgroundColor: 'rgba(255, 255, 255, 0.2)', + }, + badge: { + alignSelf: 'flex-start', + backgroundColor: 'rgba(255, 215, 0, 0.9)', + paddingHorizontal: 12, + paddingVertical: 6, + borderRadius: 8, + marginBottom: 16, + }, + badgeText: { + fontSize: 12, + fontWeight: '800', + color: '#000', + letterSpacing: 1, + }, + emojiLarge: { + fontSize: 48, + marginBottom: 12, + textShadowColor: 'rgba(0, 0, 0, 0.75)', + textShadowOffset: { width: 0, height: 2 }, + textShadowRadius: 10, + }, +}); diff --git a/example/src/screens/HomeScreen.tsx b/example/src/screens/HomeScreen.tsx index 6147548..951c2b2 100644 --- a/example/src/screens/HomeScreen.tsx +++ b/example/src/screens/HomeScreen.tsx @@ -91,6 +91,14 @@ const EXAMPLE_CATEGORIES: ExampleCategory[] = [ color: '#ffffff', image: require('../../assets/components/glitter.png'), }, + { + id: 'blur', + title: 'Blur', + description: 'GPU-accelerated compute shader blur', + screen: 'BlurStatic', + color: '#6b7280', + image: require('../../assets/components/blur.png'), + }, ]; export default function HomeScreen() { diff --git a/example/src/types.ts b/example/src/types.ts index 747669a..bdb1067 100644 --- a/example/src/types.ts +++ b/example/src/types.ts @@ -17,6 +17,7 @@ export type RootStackParamList = { DesertStatic: undefined; HoloStatic: undefined; GlitterStatic: undefined; + BlurStatic: undefined; }; export type HomeScreenNavigationProp = diff --git a/src/components/Blur/index.tsx b/src/components/Blur/index.tsx new file mode 100644 index 0000000..4d21396 --- /dev/null +++ b/src/components/Blur/index.tsx @@ -0,0 +1,256 @@ +import { + StyleSheet, + type ViewProps, + type ImageSourcePropType, + Image, +} from 'react-native'; +import { Canvas } from 'react-native-wgpu'; +import { useWGPUSetup } from '../../hooks/useWGPUSetup'; +import { useCallback, useEffect, useState } from 'react'; +import { runOnUI, useDerivedValue } from 'react-native-reanimated'; +import type { SharedValue } from 'react-native-reanimated'; +import { BLUR_SHADER } from './shader'; +import doTheTrick from '../../utils/doTheTrick'; +import { TRIANGLE_VERTEX_SHADER } from '../../shaders/TRIANGLE_VERTEX_SHADER'; + +type CanvasProps = ViewProps & { + transparent?: boolean; +}; + +type Props = CanvasProps & { + /** + * The image source to blur. + */ + source: ImageSourcePropType; + /** + * Blur filter size + * @default 15 + */ + filterSize?: number | SharedValue; +}; + +export default function Blur({ + source, + filterSize = 15, + style, + ...canvasProps +}: Props) { + const { sharedContext, canvasRef } = useWGPUSetup(); + const [imageBitmap, setImageBitmap] = useState(null); + + const animatedFilterSize = useDerivedValue(() => { + const size = typeof filterSize === 'number' ? filterSize : filterSize.get(); + return size; + }); + + useEffect(() => { + const loadImage = async () => { + try { + const resolved = Image.resolveAssetSource(source); + if (!resolved) { + throw new Error('Failed to resolve image source'); + } + + const url = resolved.uri; + const response = await fetch(url); + const blob = await response.blob(); + const bitmap = await createImageBitmap(blob); + + setImageBitmap(bitmap); + } catch (error) { + console.error('Error loading image:', error); + } + }; + + loadImage(); + }, [source]); + + const drawBlur = useCallback(() => { + 'worklet'; + const { device, context, presentationFormat } = sharedContext.get(); + if (!device || !context || !presentationFormat || !imageBitmap) { + return; + } + + const filterSizeValue = animatedFilterSize.get(); + + // Create source texture from image + const srcTexture = device.createTexture({ + size: [imageBitmap.width, imageBitmap.height, 1], + format: 'rgba8unorm', + usage: + GPUTextureUsage.TEXTURE_BINDING | + GPUTextureUsage.COPY_DST | + GPUTextureUsage.RENDER_ATTACHMENT, + }); + + device.queue.copyExternalImageToTexture( + { source: imageBitmap }, + { texture: srcTexture }, + [imageBitmap.width, imageBitmap.height] + ); + + // Create intermediate texture for two-pass blur + const intermediateTexture = device.createTexture({ + size: [imageBitmap.width, imageBitmap.height], + format: 'rgba8unorm', + usage: + GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT, + }); + + // Create sampler + const sampler = device.createSampler({ + magFilter: 'linear', + minFilter: 'linear', + addressModeU: 'clamp-to-edge', + addressModeV: 'clamp-to-edge', + }); + + // Create uniform buffers for both passes + const horizontalParams = device.createBuffer({ + size: 8, + usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, + }); + device.queue.writeBuffer( + horizontalParams, + 0, + new Float32Array([filterSizeValue, 0.0]) // direction = 0 (horizontal) + ); + + const verticalParams = device.createBuffer({ + size: 8, + usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, + }); + device.queue.writeBuffer( + verticalParams, + 0, + new Float32Array([filterSizeValue, 1.0]) // direction = 1 (vertical) + ); + + const fragmentModule = device.createShaderModule({ code: BLUR_SHADER }); + const vertexModule = device.createShaderModule({ + code: TRIANGLE_VERTEX_SHADER, + }); + + const horizontalPipeline = device.createRenderPipeline({ + layout: 'auto', + vertex: { + module: vertexModule, + entryPoint: 'main', + }, + fragment: { + module: fragmentModule, + entryPoint: 'fragmentMain', + targets: [{ format: 'rgba8unorm' }], + }, + primitive: { + topology: 'triangle-list', + }, + }); + + const verticalPipeline = device.createRenderPipeline({ + layout: 'auto', + vertex: { + module: vertexModule, + entryPoint: 'main', + }, + fragment: { + module: fragmentModule, + entryPoint: 'fragmentMain', + targets: [{ format: presentationFormat }], + }, + primitive: { + topology: 'triangle-list', + }, + }); + + const commandEncoder = device.createCommandEncoder(); + + const horizontalPass = commandEncoder.beginRenderPass({ + colorAttachments: [ + { + view: intermediateTexture.createView(), + clearValue: [0, 0, 0, 1], + loadOp: 'clear', + storeOp: 'store', + }, + ], + }); + horizontalPass.setPipeline(horizontalPipeline); + horizontalPass.setBindGroup( + 0, + device.createBindGroup({ + layout: horizontalPipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: srcTexture.createView() }, + { binding: 1, resource: sampler }, + { binding: 2, resource: { buffer: horizontalParams } }, + ], + }) + ); + horizontalPass.draw(3); + horizontalPass.end(); + + // Second pass: Vertical blur directly to screen + const verticalPass = commandEncoder.beginRenderPass({ + colorAttachments: [ + { + view: context.getCurrentTexture().createView(), + clearValue: [0, 0, 0, 1], + loadOp: 'clear', + storeOp: 'store', + }, + ], + }); + verticalPass.setPipeline(verticalPipeline); + verticalPass.setBindGroup( + 0, + device.createBindGroup({ + layout: verticalPipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: intermediateTexture.createView() }, + { binding: 1, resource: sampler }, + { binding: 2, resource: { buffer: verticalParams } }, + ], + }) + ); + verticalPass.draw(3); + verticalPass.end(); + + device.queue.submit([commandEncoder.finish()]); + context.present(); + }, [sharedContext, imageBitmap, animatedFilterSize]); + + useEffect(() => { + if (!imageBitmap) { + return; + } + + doTheTrick(drawBlur); + + function listenToAnimatedValues() { + animatedFilterSize.addListener(0, () => { + drawBlur(); + }); + } + + function stopListeningToAnimatedValues() { + animatedFilterSize.removeListener(0); + } + + runOnUI(listenToAnimatedValues)(); + return runOnUI(stopListeningToAnimatedValues); + }, [imageBitmap, drawBlur, sharedContext, animatedFilterSize]); + + return ( + + ); +} + +Blur.displayName = 'Blur'; + +const styles = StyleSheet.create({ + webgpu: { + flex: 1, + }, +}); diff --git a/src/components/Blur/shader.ts b/src/components/Blur/shader.ts new file mode 100644 index 0000000..1ff60f6 --- /dev/null +++ b/src/components/Blur/shader.ts @@ -0,0 +1,30 @@ +export const BLUR_SHADER = /* wgsl */ ` +@group(0) @binding(0) var inputTexture: texture_2d; +@group(0) @binding(1) var texSampler: sampler; + +struct BlurParams { + filterSize: f32, + direction: f32, // 0 = horizontal, 1 = vertical +} +@group(0) @binding(2) var params: BlurParams; + +@fragment +fn fragmentMain(@location(0) ndc: vec2) -> @location(0) vec4 { + let uv = (ndc + 1.0) / 2.0; + let texSize = vec2(textureDimensions(inputTexture)); + + var color = vec4(0.0); + let radius = i32(params.filterSize / 2.0); + + for (var i = -radius; i <= radius; i++) { + let offset = mix( + vec2(f32(i) / texSize.x, 0.0), // horizontal + vec2(0.0, f32(i) / texSize.y), // vertical + params.direction + ); + color += textureSample(inputTexture, texSampler, uv + offset); + } + + return color / params.filterSize; +} +`; diff --git a/src/index.tsx b/src/index.tsx index fea92b2..f4e9879 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -8,6 +8,7 @@ import CalicoSwirl from './components/CalicoSwirl'; import Desert from './components/Desert'; import Holo from './components/Holo'; import Glitter from './components/Glitter'; +import Blur from './components/Blur'; export { CircularGradient, @@ -20,4 +21,5 @@ export { Desert, Holo, Glitter, + Blur, };