View in English

  • Apple Developer
    • 시작하기

    시작하기 탐색

    • 개요
    • 알아보기
    • Apple Developer Program

    알림 받기

    • 최신 뉴스
    • Hello Developer
    • 플랫폼

    플랫폼 탐색

    • Apple 플랫폼
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    피처링

    • 디자인
    • 배포
    • 게임
    • 액세서리
    • 웹
    • 홈
    • CarPlay
    • 기술

    기술 탐색

    • 개요
    • Xcode
    • Swift
    • SwiftUI

    피처링

    • 손쉬운 사용
    • 앱 인텐트
    • Apple Intelligence
    • 게임
    • 머신 러닝 및 AI
    • 보안
    • Xcode Cloud
    • 커뮤니티

    커뮤니티 탐색

    • 개요
    • Apple과의 만남 이벤트
    • 커뮤니티 주도 이벤트
    • 개발자 포럼
    • 오픈 소스

    피처링

    • WWDC
    • Swift Student Challenge
    • 개발자 이야기
    • App Store 어워드
    • Apple 디자인 어워드
    • 문서

    문서 탐색

    • 문서 라이브러리
    • 기술 개요
    • 샘플 코드
    • 휴먼 인터페이스 가이드라인
    • 비디오

    릴리즈 노트

    • 피처링 업데이트
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • 다운로드

    다운로드 탐색

    • 모든 다운로드
    • 운영 체제
    • 애플리케이션
    • 디자인 리소스

    피처링

    • Xcode
    • TestFlight
    • 서체
    • SF Symbols
    • Icon Composer
    • 지원

    지원 탐색

    • 개요
    • 도움말
    • 개발자 포럼
    • 피드백 지원
    • 문의하기

    피처링

    • 계정 도움말
    • 앱 심사 지침
    • App Store Connect 도움말
    • 새로 추가될 요구 사항
    • 계약 및 지침
    • 시스템 상태
  • 빠른 링크

    • 이벤트
    • 뉴스
    • 포럼
    • 샘플 코드
    • 비디오
 

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 자막 전문
  • 코드
  • Metal로 실시간 뉴럴 렌더링 파이프라인 구축하기

    Metal 4를 사용하여 실시간 렌더링 파이프라인에 머신 러닝을 통합하는 방법을 알아보세요. MetalFX 뉴럴 노이즈 제거로 프로덕션 품질의 결과를 얻는 실용적인 도입 패턴과 모범 사례를 살펴보며, Maxon의 Redshift Live에서 얻은 실제 인사이트를 소개합니다. 그래픽 작업에 맞게 ML 커맨드 인코더를 사용하여 뉴럴 톤 매퍼를 학습시키고 배포하는 방법을 알아보세요. 마지막으로, 새로운 텐서 API를 자세히 알아보고 셰이더 내에서 직접 작고 특수한 신경망을 구축하고 평가해 보세요.

    챕터

    • 0:00 - Introduction
    • 2:16 - MetalFX Denoising
    • 9:57 - Deploy custom ML networks with Metal 4
    • 13:40 - Inline neural networks with tensorOps
    • 20:55 - Next steps

    리소스

    • Training a neural network to render irradiance in real time
    • Metal sample code library
    • Download the Metal Performance Primitives (MPP) Programming Guide
    • Understanding the Metal 4 core API
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC25

    • Metal 4 게임 심화 기능 알아보기
    • Metal 4 머신 러닝과 그래픽 결합하기
  • 비디오 검색…

    안녕하세요, 저는 Yulia입니다 Apple의 GPU 소프트웨어 엔지니어예요 오늘은 머신 러닝을 실시간 렌더링에 Metal 4로 통합하는 방법을 소개해 드릴게요 머신 러닝을 렌더러에 통합하는 실용적인 방법을 배울 수 있어요 고성능 파이프라인 구축을 위한 모범 사례 오늘부터 바로 적용할 수 있는 두 가지 기법도 알아볼게요 머신 러닝은 연구 단계를 벗어나 실시간 렌더링 프로덕션에 진입했어요 렌더링 파이프라인 전반에 걸쳐 기존에 분석적 방법에 의존하던 다양한 검증된 기법들이 머신 러닝으로도 구현될 수 있어요 뉴럴 디노이징, 뉴럴 텍스처 학습 기반 톤 매핑 등 다양한 기법에서 머신 러닝을 활용할 수 있어요 파이프라인의 모든 단계에서 이 접근 방식은 품질을 성능 또는 메모리 사용량을 개선할 수 있어요 Metal에서 어떻게 작동하는지 설명해 드릴게요 Apple 플랫폼에서는 렌더링을 위한 완전한 머신 러닝 도구 세트를 사용할 수 있어요 가장 상위 레벨의 MetalFX는 즉시 사용 가능한 뉴럴 디노이징 및 업스케일링 API를 완전히 통합된 블랙박스 솔루션으로 제공해요 Metal 4 ML 커맨드 인코더는 사전 학습된 모델을 커맨드 버퍼에서 직접 실행할 수 있게 해 통합과 스케줄링에 대한 더 많은 제어권을 드려요 가장 유연한 레벨에서는 TensorOps API가 빌딩 블록을 제공해요 셰이더에서 직접 커스텀 모델을 설계하고 실행할 수 있게요 뉴럴 가속기를 완전히 활용할 수 있게 해주는 M5 및 A19 Pro Apple 실리콘 GPU에 도입된 기능이에요 오늘은 이 모든 것을 차례대로 알아볼게요

    순서는 다음과 같아요 MetalFX로 렌더링 파이프라인에서 프로덕션 수준의 결과를 얻는 방법 MetalFX로 적용하는 방법을 다룰게요 Maxon의 Redshift Live를 예시로 현대적인 실시간 패스 트레이싱 뷰포트에 대해 Apple의 모범 사례를 활용해 MetalFX 디노이징을 적용한 사례로요 그다음, 뉴럴 톤 매퍼를 학습시키고 Metal 4로 배포하는 방법을 설명해 드릴게요 마지막으로, 셰이더에서 직접 소규모 네트워크를 구축하는 방법을 TensorOps API를 사용해 알아볼게요 MetalFX부터 시작해 볼게요 패스 트레이서에서 프레임 예산으로 픽셀당 한 개 또는 소수의 샘플만 허용해 인터랙티브하게 유지해요 그러나 샘플 하나는 자연스럽게 노이즈가 발생해요

    품질 기준을 유지하려면 MetalFX 디노이징을 사용하세요 이 기능은 특별히 설계됐어요 라이브 뷰포트의 저지연 요구 사항을 위해서요 MetalFX 디노이징은 뉴럴 업스케일러와 디노이저를 결합한 솔루션으로 Apple 실리콘에 최적화된 플랫폼 통합 솔루션이에요 파이프라인에 쉽게 통합할 수 있어요 디퓨즈 알베도 같은 몇 가지 추가 보조 입력을 생성해야 해요 깊이 및 몇 가지 항목이 더 필요해요 렌더러에 따라 이미 생성되어 있을 수도 있어요 이 입력들을 MetalFX에 전달하면 아름다운 디노이즈 이미지가 만들어져요 그런 다음 파이프라인을 완성해요 포스트 프로세싱을 거쳐 출력물을 표시하면서요 Redshift Live는 Maxon의 현대적인 실시간 패스 트레이서로 Cinema 4D에서 고품질 3D 에셋을 렌더링해요 Apple 실리콘에서요 뷰포트에서 패스 트레이싱의 모든 이점을 얻을 수 있지만 카메라 이동 중에는 노이즈가 보일 수 있어요 픽셀당 1 샘플 표현에서 발생하는 노이즈예요 MetalFX 디노이저를 활성화하면 이미지가 훨씬 안정적이고 노이즈 없이 변환돼요 Redshift Live는 이제 깨끗하고 최종에 가까운 인터랙티브한 프레임 속도로 이미지 품질을 제공해요 실시간 레이 트레이싱 조명 그림자 및 글로벌 일루미네이션과 함께요 이제 아티스트는 뷰포트에서 조명 효과가 실시간으로 일어나는 것을 이 나무가 이동하는 것처럼 볼 수 있어요 이것은 하드웨어 가속 레이 트레이싱과 MetalFX 뉴럴 디노이징을 결합할 때 가능해요 픽셀당 1 샘플 프레임의 예시를 보여드릴게요 Redshift Live로 렌더링됐어요 공간적 및 시간적 기법을 모두 활용해서 MetalFX는 노이즈 있는 픽셀당 1 샘플을 이미지로 변환할 수 있어요 실시간으로 최종에 가까운 품질로요 입력에 대한 모든 세부 사항과 앱에서 MetalFX를 활용하는 방법은 "Go further with Metal 4 games" 세션을 확인해 보세요 Maxon이 MetalFX에서 최상의 품질을 얻기 위해 사용한 세 가지 주요 모범 사례를 안내해 드릴게요 디노이저 입력과 노이즈부터 시작할게요

    디노이저의 출력 품질은 직접적으로 입력 품질에 달려 있어요 일반적으로 보조 입력은 노이즈가 없어요 최대한 그 상태를 유지하세요 모든 입력 중에서 디퓨즈 알베도가 디노이징에 가장 강력한 신호예요 확실하지 않을 때는 화면에서 원하는 최종 결과의 노이즈 없는 버전에 최대한 가깝게 만드세요 엔진에서 각 입력에 대한 디버그 뷰를 만드는 것을 고려하세요 GPU 캡처를 사용해 텍스처를 프레임별로 검사하세요 이렇게 하면 입력을 검증할 수 있어요 모델이 기대하는 방식으로 보이는지 확인하면서요

    씬에 노이즈 없는 레이어가 있을 수 있어요 또는 강하게 디노이징하고 싶지 않은 일부 부분도 있을 수 있어요 두 가지 도구를 활용할 수 있어요 투명도 오버레이와 디노이저 강도 마스크예요 이를 사용하면 이런 시나리오에서 품질을 극대화할 수 있어요 파티클, 안개, 볼류메트릭, 하늘은 의미 있는 표면이 없는 효과들이에요 렌더링 파이프라인에 따라 이미 노이즈가 없을 수도 있어요 MetalFX는 노이즈 있는 입력을 디노이징하고 업스케일링해요

    노이즈 없는 이런 효과에는 활용할 수 있어요 MetalFX 투명도 오버레이 입력을요 오버레이 입력은 업스케일링만 되고 최종 결과에 합성돼요 하늘처럼 이미 노이즈 없는 영역은 MetalFX를 구성할 수 있어요 해당 픽셀의 디노이징을 건너뛰도록 디노이저 강도 마스크를 사용해요 예시를 보여드릴게요 여기서 하늘은 디노이징하지 않도록 표시됐어요 값은 0부터 조정할 수 있어요 디노이징 없음을 의미하고 최대 1까지 사용 사례에 따라 최대 강도로 디노이징함을 의미해요 씬의 디노이징 효과를 제어할 수 있어요 이미 MetalFX에서 훌륭한 출력을 얻을 수 있어요 하지만 반사와 투과와 관련된 까다로운 경우가 몇 가지 있어요 두 번째 모범 사례가 도움이 될 거예요 거울은 자체 색상이 없어요 보는 사람에게는 반사된 표면이 보여요 앞서 말씀드린 것처럼 입력 특히 디퓨즈 알베도는 원하는 최종 출력을 최대한 가깝게 나타내야 해요 거울 같은 오브젝트에 알베도 법선과 같은 반사된 지오메트리 속성과 거칠기를 저장하세요

    유리는 동일한 기본 개념을 기반으로 조금 더 확장돼요 보는 사람에게는 반사된 것과 투과된 것의 조합이 보이고 노이즈가 있을 수 있어요 한 가지 해결책은 디퓨즈 알베도 같은 지오메트리 속성을 Fresnel 항으로 블렌딩해 입력 노이즈를 크게 줄이는 거예요 Fresnel은 특정 교점에서 얼마나 많은 빛이 반사 대 굴절되는지를 알려주는 항이에요 왼쪽에는 기본 표면 알베도가 오른쪽에는 반사 및 굴절 알베도를 결합한 것으로 교체됐어요

    이것은 기본 표면 대체라고 하는 잘 알려진 기법이에요 이것을 올바르게 하면 반사가 아름답고 선명하게 유지돼요 이제 머티리얼이 풍부해 보이고 반사 및 굴절이 선명해졌으니 세 번째 모범 사례인 모션 벡터를 올바르게 설정하는 방법으로 넘어가요 올바른 모션 벡터는 시간적 안정성에 필수적이에요 모션 벡터는 픽셀별 스크린 공간 변위예요 현재 프레임에서 이전 프레임으로의 변위예요 모든 픽셀에 대해 모션 벡터는 질문에 답해야 해요 이 픽셀이 이전 프레임에서 어디에 있었나요? 모션 벡터는 현대 렌더링 기법의 핵심이에요 모션 벡터를 올바르게 설정하는 것은 흐릿한 결과와 모션 중 선명한 출력의 차이를 만들어요 모델은 모션 벡터를 사용해요 모션과 시간에 따른 씬을 이해하기 위해서요 MetalFX는 디지터된 모션 벡터를 기대해요, 즉 서브 픽셀 이동 없이요 이 없이는 MetalFX가 모션 벡터를 받을 수 있는데 최대 1픽셀 오차가 있을 수 있어 엣지 시머링이 발생해요 올바르게 계산하는 방법을 알아볼게요 정적 오브젝트의 카메라 전용 모션 벡터를 계산하는 코드예요 현재 버텍스의 투영 위치를 계산하는 것으로 시작해요 그런 다음 이전 프레임의 행렬로 같은 위치를 투영해요 모션 벡터는 두 값의 차이예요 하지만 카메라 행렬이 지터됐으므로 현재 프레임에서 지터 델타를 빼주세요 이전 프레임에서도요 마지막으로 더 깔끔한 모션을 위해 지터 없는 깨끗한 모션 벡터를 얻어요 이동하는 오브젝트와 변형되는 지오메트리의 경우 카메라 전용 경로는 변위를 감지하지 못해요 각 버텍스의 이전 프레임 월드 위치를 저장하거나 두 번 스키닝해서 실제 모션 벡터를 계산하세요 모션이 실제로 신뢰하기 어려운 오브젝트의 경우 알파 블렌딩된 파티클 같은 빠른 모션에는 리액티브 마스크를 사용하세요 리액티브 마스크에 대한 자세한 내용은 "Go further with Metal 4 games"를 참조하세요 실제로 어떻게 보이는지 알아볼게요 Maxon의 Redshift Live는 제가 방금 다룬 모든 모범 사례를 구현해요 MetalFX 디노이징을 최대한 활용해 Apple 실리콘에서 실행하며 최종에 가까운 이미지 품질을 제공해요 이제 플랫폼 솔루션을 넘어서 ML 기반 솔루션을 직접 구축하는 방법을 알아볼게요 뉴럴 렌더링은 디노이징을 훨씬 넘어서요 파이프라인 전반에 걸쳐 점점 더 많은 기법이 머신 러닝 기반으로 전환되고 있어요 Metal 4로 자체적인 것을 만들고 배포할 수 있어요 Metal 4는 두 가지 방법으로 직접 가져온 머신 러닝 기법을 파이프라인에 통합할 수 있게 해요 머신 러닝 커맨드 인코더는 학습된 모델을 배포해줘요 동일한 파이프라인의 커맨드 버퍼에서 바로 컨텍스트 전환 없이요 TensorOps API는 셰이더에서 직접 소규모 하드웨어 가속 네트워크를 구축할 수 있게 해줘요 두 API에 대한 자세한 내용은 "Combine Metal 4 machine learning and graphics"를 참조하세요 오늘은 톤 매핑에 집중할게요 대부분의 렌더러에는 광범위한 포스트 프로세싱 파이프라인이 있어요 HDR 이미지를 올바르게 매핑하기 위해 표시할 수 있고 예술적 비전과 일치하는 것으로요 예를 들어 톤 매핑 컬러 그레이딩 또는 필름 에뮬레이션이 있어요 파이프라인은 여러 단계로 구성되어 있어요 각 단계는 자체 매개변수와 연결된 출력을 가져요 파이프라인은 임의로 복잡해질 수 있어요 최상의 결과는 이미지의 내용을 이해하는 것에서 나와요 그것이 바로 뉴럴 네트워크가 학습할 수 있는 것이에요 아이디어는 간단해요 기존의 전체 컬러 파이프라인이나 일부를 가져다가 하나의 뉴럴 네트워크로 교체해요 네트워크는 컬러 변환을 학습할 거예요 이런 워크플로의 예시를 HDRNet이라고 해요 Gharbi와 동료들이 만든 2017년 아키텍처예요 작동 방식에 대한 조감도를 보여드릴게요 네트워크는 이미지의 소규모 다운샘플 버전에서 작동해요 두 가지 유형의 분석을 수행해요 씬 레벨과 세부 사항 모두 캡처하기 위해 글로벌 및 로컬 분석이에요 이 과정을 통해 네트워크는 컬러 변환을 생성할 수 있어요 이미지의 16x16 타일에 대해서요 이 지역화된 변환들은 스마트한 엣지 인식 기법으로 적용돼요 아름다운 톤 매핑된 최종 결과를 만들어내요

    이 솔루션을 만들기 위해 먼저 개발해요 선택한 프레임워크에서 네트워크를 학습시켜요 예를 들어 PyTorch로요 학습 데이터는 수동으로 톤 매핑된 이전 프로젝트에서 가져올 수 있어요 또는 렌더러가 생성한 많은 수의 톤 매핑 이미지에서 가져올 수도 있어요 모델 학습이 완료되면 MTLPackage로 내보내세요 Metal 4에서 네트워크를 실행하기 위해서는 설정과 실제 실행 모두에서 몇 가지 단계가 필요해요 둘 다에서요 먼저 MTLPackage를 불러와서 파이프라인을 설정해야 해요 함수 디스크립터로 네트워크 함수를 지정하고 머신 러닝 파이프라인 디스크립터를 생성해요 이 과정은 일반 파이프라인을 로드하는 것과 매우 유사해요 다음 단계는 네트워크 실행을 디스패치하는 거예요 이를 위해 인코더를 생성하고 입력과 출력이 있는 인수 테이블을 생성해요 마지막으로 커맨드 버퍼를 디스패치해요 실행이 시작되면 컴퓨트 작업이 혼합되고 머신 러닝 및 렌더링 작업이 동시에 진행돼요 업데이트된 파이프라인이에요 먼저 패스 트레이서가 샘플을 생성해요 그다음 MetalFX 디노이징과 새 뉴럴 톤 매퍼가 이어지고 모두 같은 커맨드 버퍼에 인코딩돼요 같은 프레임에서 실행돼요 ML 인코더가 전체 다단계 포스트 프로세싱 체인을 단일 뉴럴 평가로 교체했어요 네트워크를 학습시키고 배포하는 방법을 설명했어요 이제 한 단계 더 들어가 소규모 네트워크를 구축해볼게요 TensorOps API를 사용해 셰이더에서 직접요 지금까지 매우 대규모 데이터셋으로 오프라인 학습된 대규모 범용 네트워크를 살펴봤어요 이제 반대 접근 방식인 하나의 특정 작업을 위한 소규모 네트워크를 보여드릴게요 수천 개 이하의 매개변수로 씬 데이터로 학습되는 때로는 몇 프레임마다 온라인으로 학습되기도 해요 네트워크는 한 가지 시나리오만 봐요 일반화할 필요가 없어요 지금까지 독립 단계로서 ML을 실행하는 방법을 같은 커맨드 버퍼에서 배웠어요 여기서는 컴퓨트 및 렌더와 함께 실행돼요 그러나 소규모 네트워크는 셰이더 인라인에 맞을 수 있어요 나머지 코드 사이에 ALU 및 텍스처 샘플링 명령 사이에요 핵심 기술은 TensorOps예요 렌더링 파이프라인의 모든 단계에서 사용 가능해요 이 모든 것이 결합되어 새로운 가능성과 워크플로를 열어줘요 온라인 학습을 포함하는요 이미지 기반 조명에 사용되는 스카이박스 예시를 보여드릴게요 스카이박스는 씬의 지오메트리에 빛을 비추고 자연스러운 부드러운 조명을 만들어요 부드러운 조명은 결과예요 특정 지점에서 모든 가시 방향에서 오는 평균 빛이에요 일반적으로 이 결과는 오프라인으로 미리 계산되고 런타임에 샘플링돼요 그러나 씬은 거의 정적이지 않아요 동적 낮-밤 사이클이 있을 수 있어요 오프라인으로 학습된 신호가 동기화되지 않을 수 있어요 이것은 뉴럴 네트워크의 학습 가능한 함수예요 여기서 온라인 학습이 등장해요 이 기법을 재현하는 방법을 알아볼게요 지금까지 배운 머신 러닝 인코더를 기반으로 단순화된 렌더링 루프는 이렇게 생겼어요 먼저 월드를 업데이트해요 렌더링을 위한 모든 정보가 최신 상태가 되도록요 다음으로 머신 러닝 인코더를 디스패치해요 모델에서 추론을 실행하기 위해 필요한 조명 정보를 생성해요 셰이딩에 나중에 사용할요 온라인 학습은 이 패러다임을 바꿔요 자체 학습 및 추론 루틴을 만들어서 프레임당 하나 이상의 학습 반복을 실행할 수 있어요 모델 정확도를 높이기 위해서요 온라인 학습 루프는 스카이 조명 모델에 대해 이렇게 생겼어요 샘플링하려는 방향을 생성하고 모델에서 추론을 실행해 결과를 얻어요 그런 다음 분석적 솔루션을 계산할 수 있어요 오류를 계산하는 데 사용할 수 있는 스카이 조명 문제에 대해 마지막으로 역전파 패스를 실행해 점진적으로 모델을 개선해요 이것은 오프라인으로 학습하는 데 사용할 수 있는 정확히 같은 흐름이에요 하지만 이번에는 프레임 단위로 학습 반복을 반복해요

    이제 자체 추론 및 학습 루틴을 실행하고 있어요 이를 통해 추론 패스를 실행할 수 있어요 셰이딩 패스에 인라인으로요 TensorOps는 이것을 매우 효율적으로 구현할 수 있게 해줘요 이제 매 프레임마다 적응하는 모델이 있어요 새로운 월드 상황에 바로 셰이딩에 이 정보를 사용할 수 있어요 이것은 불가능했을 거예요 표준 오프라인 학습 워크플로로는요 이 개념은 신호를 학습할 수 있는 모든 기법에 일반화돼요 자체 솔루션 구축을 시작하는 방법을 알아볼게요 상위 레벨에서 뉴럴 네트워크는 구성돼요 세 가지 주요 빌딩 블록으로요 입력 레이어 네트워크 입력을 처리해요 입력 특성이라고도 해요 출력 레이어는 네트워크의 최종 예측을 생성해요 마지막으로 히든 레이어예요 학습의 마법이 일어나는 곳이에요 스카이 프로브는 소규모 네트워크예요 히든 레이어 그룹은 각 4개의 뉴런을 가진 두 개의 히든 레이어로 구성돼요 네트워크는 방향을 인코딩하기 위해 3개의 float를 입력으로 받아요 그리고 3개의 float를 출력으로 생성해요 해당 방향에서 오는 평균 조명을 색상으로 나타내요 이것은 완전히 연결된 다층 퍼셉트론이라고 해요 줄여서 MLP라고 하고 3-4-4-3 네트워크예요 입력 크기를 실험해 볼 수 있어요 레이어의 양과 크기도요 앱에서 최상의 결과를 얻기 위해서요 네트워크를 평가하려면 입력 텐서를 준비해야 해요 여러 입력을 한 번에 배치해서 2D 행렬로 만드는 것이 좋아요 스카이 프로브 예시의 경우 2D 행렬이 돼요 평가하려는 입력 방향의 배치로요 하지만 입력에는 네트워크에 유용할 수 있는 어떤 데이터도 포함될 수 있어요 위치 데이터나 머티리얼 데이터처럼요 같은 원칙이 출력 텐서에도 적용돼요 스카이 프로브의 경우 색상 배치의 2D 행렬로 만드세요 MLP의 구조를 알았으니 셰이더에서 구현하는 방법과 포워드 패스에서 평가하는 방법을 알아볼게요 이제 평가를 시작할 준비가 됐어요 입력 텐서와 첫 번째 히든 레이어 가중치 텐서가 있어요 matmul 2D 텐서 연산을 사용해 두 개를 곱할 수 있어요 사전 활성화 결과를 얻게 되는데 활성화 함수를 적용하려 해요 그 전에 행렬 곱셈 결과를 저장해야 해요 효율적으로 하는 방법을 설명해 드릴게요 스레드 실행 범위에 익숙하실 수도 있어요 단일 스레드가 전체 텐서 연산을 담당해요 이는 분산 작업 실행이나 파이프라인 단계에서 잘 작동해요 스레드 그룹을 완전히 제어하지 못할 때요 완전히 제어할 때는 새로운 가능성이 생겨요 컴퓨트 단계에서 SIMD 그룹 실행 범위를 사용할 수 있어요 참여하는 모든 스레드가 같은 행렬 곱셈을 처리해요 이 실행 모드는 협력 텐서에 접근할 수 있게 해줘요 협력 텐서 저장소는 분산돼요 스레드 그룹의 여러 스레드에요 메인 메모리로의 비용이 많이 드는 왕복을 피해요 첫 번째 곱셈의 출력으로 협력 텐서를 사용하면 결과가 빠른 스레드 저장 메모리에 유지돼요 그런 다음 활성화 함수를 제자리에서 적용할 수 있어요 다음 레이어에 대해 행렬 곱셈의 같은 작업을 반복할 수 있어요 그리고 활성화도요 모든 이후 레이어에도요 출력 레이어까지요 결과 텐서를 저장할 수 있는 곳에서 컴퓨트 셰이더에서 즉시 또는 이후 단계에서 활용할 수 있어요 왼쪽에는 레이 트레이싱으로 계산된 그라운드 트루스 렌더예요 오른쪽에는 뉴럴 렌더링 버전이에요 소규모 뉴럴 네트워크가 신호를 효율적으로 학습할 수 있었어요 MLP를 구성하고 셰이더에서 평가하는 방법에 대한 상위 레벨 개요였어요 TensorOps를 사용해서요 같은 빌딩 블록을 사용해 효율적인 역전파 패스를 만들 수 있어요 온라인 학습 단계에 필요한요 모든 코드 세부 사항은 "Metal Performance Primitives (MPP) Programming Guide"를 확인하세요 요약하면 오늘은 렌더링 파이프라인에서 ML의 세 가지 레벨을 다뤘어요 먼저 MetalFX가 플랫폼 통합 뉴럴 디노이징을 제공해요 세 가지 모범 사례와 함께요 입력을 깔끔하게 유지하세요 보는 사람이 보는 것을 저장하세요 모션 벡터를 올바르게 설정하세요 다음으로 MTLPackage를 사용해 내보낼 수 있어요 오프라인으로 학습된 모델을 런타임에 배포하고 전체 포스트 프로세싱 파이프라인을 교체하는 방법을 배웠어요 하나의 뉴럴 평가로요 마지막으로 TensorOps API를 다뤘어요 셰이더에서 직접 소규모 네트워크를 구축할 수 있게 해줘요 뉴럴 가속기에서 실행해요 각 레벨은 더 많은 제어권을 줘요 앱에 맞는 것을 선택하세요 Xcode를 다운로드하고 Metal 4 샘플 코드를 살펴보세요 앱에 실시간 요구 사항이 있다면 프로 앱이나 게임의 뷰포트 같은 경우 MetalFX 디노이징 및 업스케일링을 적용하세요 자체 포스트 프로세싱 파이프라인으로 뉴럴 톤 매퍼를 학습시켜 보세요 tensor API를 사용해 소규모 전문화된 네트워크로 실험해 보세요 이전 연도의 세션에서 더 자세한 내용을 확인하세요

    여러분이 만드는 것이 기대돼요

    • 8:46 - Compute camera-only motion vectors

      #include <metal_stdlib>
      using namespace metal;
      
      // Compute camera-only motion vectors
      float4 clipCurrent = viewProjCurrent * float4(worldPos, 1.0);
      float2 ndcCurrent = clipCurrent.xy / clipCurrent.w;
      
      float4 clipPrevious = viewProjPrevious * float4(worldPos, 1.0);
      float2 ndcPrevious = clipPrevious.xy / clipPrevious.w;
      
      float2 motion = ndcPrevious - ndcCurrent;
      
      // Get subpixel offset for current and previous frames
      float2 jitterCurrent = getJitter(frameIndex);
      float2 jitterPrevious = getJitter(frameIndexPrevious);
      motion -= jitterPrevious - jitterCurrent;
    • 0:00 - Introduction
    • An overview of how machine learning is transforming real-time rendering pipelines on Apple platforms, and a preview of three levels of ML integration: MetalFX Denoising, deploying custom networks with Metal 4, and building tiny networks inline in shaders with tensorOps.

    • 2:16 - MetalFX Denoising
    • How to integrate MetalFX Denoising into a path tracer running at one sample per pixel. Covers auxiliary inputs (albedo, depth, motion vectors), best practices for clean inputs, transparency overlays, the denoiser strength mask, and primary surface replacement for mirrors and glass — illustrated with Redshift Live from Maxon.

    • 9:57 - Deploy custom ML networks with Metal 4
    • How to train a neural tone mapper offline (e.g., HDRNet), export it to Metal Performance Shaders Graph, and execute it inside a Metal 4 command buffer alongside your existing rendering passes to replace complex post-processing pipelines with a single network.

    • 13:40 - Inline neural networks with tensorOps
    • How to build and run small multilayer perceptrons directly inside Metal shaders using the TensorOps API and cooperative tensors. Demonstrates an online-trained sky visibility probe that adapts to dynamic scenes each frame — enabling ML inference and training that runs alongside your existing compute and render work.

    • 20:55 - Next steps
    • A recap of the three levels of ML integration in rendering pipelines, and guidance on where to start: download Xcode, explore Metal 4 sample code, and adopt MetalFX denoising for real-time applications first.

Developer Footer

  • 비디오
  • WWDC26
  • Metal로 실시간 뉴럴 렌더링 파이프라인 구축하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • Apple Intelligence
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • Mini Apps Partner Program
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    최신 뉴스 읽기.
    Apple Developer 앱 받기.
    Copyright © 2026 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침