스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
Apple 플랫폼으로 고사양 게임 포팅하기
Apple 플랫폼에서 게임을 즐기는 전 세계 플레이어에게 도달하는 방법은 매우 간단합니다. Apple Silicon에서 Windows 실행 파일 평가하기, 코드 샘플로 게임 포팅하기, 셰이더 코드를 Metal로 변환하기, Mac·iPhone·iPad로 게임 가져오기 등의 작업을 수행하는 방법을 확인해 보세요. 포팅된 셰이더를 Metal에서 검증, 디버깅, 프로파일링하기 위해 HLSL 셰이더를 파악하는 향상된 Metal 도구에 대해서도 알아보세요.
챕터
- 0:00 - Intro
- 2:06 - Evaluate your game
- 2:07 - Port your game
- 6:22 - Configuration
- 9:29 - Shaders
- 11:36 - Graphics
- 16:06 - Input and rumble
- 17:56 - Audio
- 18:53 - Cloud saves
- 21:28 - Debug and profile with Metal tools
- 28:39 - Wrap-up
리소스
- Download the Game Porting Toolkit 2
- Forum: Graphics & Games
- Get started with Metal shader converter
- Getting started with Metal-cpp
- Metal
- Metal Developer Resources
- Rendering reflections in real time using ray tracing
- Simplifying GPU Resource Management with Residency Sets
- Validating your app’s Metal API usage
- Validating your app’s Metal shader usage
관련 비디오
WWDC24
Tech Talks
WWDC23
WWDC22
WWDC21
- Discover geometry-aware audio with the Physical Audio Spatialization Engine (PHASE)
- Discover Metal debugging, profiling, and asset creation tools
WWDC20
WWDC19
-
다운로드Array
-
-
12:51 - Build a residency set
// Build a residency set. // Create a new residency set. MTL::ResidencySet* residencySet; residencySet = device->newResidencySet(residencySetDescriptor, &error); // Add to main command queue. commandQueue->addResidencySet(residencySet); // Add allocations and commit changes. residencySet->addAllocation(texture); residencySet->addAllocation(buffer); residencySet->addAllocation(heap); residencySet->commit(); // Use residency sets. // Allocate and encode a command buffer. MTL::CommandBuffer* commandBuffer = commandQueue->commandBuffer(); // ... // The command queue marks residency for the set for this command buffer. commandBuffer->commit();
-
14:46 - Upscale image with MetalFX
// Upscale image with MetalFX. mfxTemporalScaler->setColorTexture(currentFrameColor); mfxTemporalScaler->setDepthTexture(currentFrameDepth); mfxTemporalScaler->setMotionTexture(currentFrameMotion); mfxTemporalScaler->setOutputTexture(currentFrameUpscaledColor); mfxTemporalScaler->setJitterOffsetX(currentFrameJitter.x); mfxTemporalScaler->setJitterOffsetY(currentFrameJitter.y); mfxTemporalScaler->setReactiveMaskTexture(currentFrameReactiveMask); mfxTemporalScaler->encodeToCommandBuffer(commandBuffer);
-
19:53 - Use the cloud save manager
// Use the cloud save manager. CloudSaveManager* cloudSaveManager = [[CloudSaveManager alloc] initWithCloudIdentifier:@"iCloud.com.mycompany.mygame" saveDirectoryURL:[NSURL fileURLWithPath:@"/path/to/saves"]]; [cloudSaveManager syncWithCompletionHandler:^(BOOL conflictDetected, NSError *error) { // Handle conflicts or errors, for example, by presenting a choice. }]; // Access and write saves [cloudSaveManager uploadWithCompletionHandler:^(BOOL conflictDetected, NSError *error) { // Handle errors and conflicts or delay until the next sync. }];
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.