Apple's Metal examples alternate between using texture2D<float> and texture2D<half>, and I believe that the default pixel format of a MTKView is bgra8unorm. What determines if I should use float or half? Do I need to specify something on the CPU, or will textures using 128-bits-in-all float4s be converted into halfs automatically? How about the other way around if I pass-in a texture with a bgra8format? I am asking because I am trying to load textures using MTKTextureLoader as well as from plain byte data, and I'm not sure what format to use for the plain byte data so things are consistent. May I have clarification?
How to know which Metal texture format to use? short or half?
689 views Asked by synchronizer At
1
There are 1 answers
Related Questions in GRAPHICS
- How to fix "Access violation executing location" when using GLFW and GLAD
- Why is the value of `gl_FragCoord.z` is always 0.5?
- A way to warp an image based on a map
- Spacing out overlapping rectangles: how to translate pseudocode?
- 3D graph in Rstudio (time vs intensity vs coefficient)
- I want to create a creative website based on my project. I am new in this field
- Color each field in a mosaic plot in R
- How to convert raw RGB luminance using OCIO
- CPU Ray Tracer finds intersection for only a certain setup
- How do I dynamically change vertex colors using Direct3d 12 and Visual C++?
- Python Mediapipe replace chest pose landmark lines with custom image
- I was following Computer Graphics from Scratch -- Getting distorted spheres
- Convert coordinates in android
- Python Mediapipe replace pose landmark line drawings with custom image drawings
- Is there a way to automatically export OpenOffice/LibreOffice drawings to bitmaps, with options?
Related Questions in TEXTURES
- LibGDX Normal Textures Not Showing Up in 3D (Blender) Model Java
- A way to warp an image based on a map
- Cracks in my automatic texture in Unreal engine 5
- Threejs .glb loading textures issue, texures not loaded
- Which format should be more smooth for complex R8 textures - BC4 or BC7?
- Unity render Texture is not as clear as the actual gameobject in the scene, how to make it clearer?
- Anyone else notcing delays of shared d3dtexture2D betweeen two processes?
- How to ensure the background texture joins up smoothly around sphere in Three.js?
- Update node's physicsbody with texture animation?
- Transfer GL_TEXTURE_2D Image to GL_TEXTURE_CUBE_MAP
- Converting Texture Atlas exported from Adobe Animate to Images
- WGPU: How to change max_bind_groups/device bind group limit?
- How to calculate Uvs from texture atlas?
- Downloaded model has no materials or textures
- Three.js Y Axis Offset for Equirectangular Image Not Working
Related Questions in METAL
- Using MTLPixelFormat.rgba16Float results in random round-off errors
- The Three-Image Problem: How do I set tagged color data in MTKView and CIContext to properly display all three images?
- Max total threads per thread group and gpu cores on apple machines
- MTLBuffers returning "shifted" values in kernel shader using structs, works on simulator, not on device
- Failed to install llama-cpp-python with Metal on M2 Ultra
- How to use multiple mps devices in M1 Mac for PyTorch
- Metal: Image blocks and MSAA
- Basic ImGui program doesn't render, leaks memory and crashes
- How to set frame rate in GLFW based metal application?
- In Metal, how to wait for all GPU operations in my process to complete?
- Metal sampling texture from argument buffer generates GPU Address Fault
- glDrawPixels equalent for Metal API
- Lack of non-normalized 10_10_10_2 vertex format in Metal
- Device orientation dependent SwiftUI Metal problem: RBLayer: unable to create texture: BGRA8Unorm
- How to render content of CALayer and sync with it in real-time
Related Questions in METALKIT
- The Three-Image Problem: How do I set tagged color data in MTKView and CIContext to properly display all three images?
- MTLBuffers returning "shifted" values in kernel shader using structs, works on simulator, not on device
- Lack of non-normalized 10_10_10_2 vertex format in Metal
- Issues with Vertical Stretching and Horizontal Movement in Metal Shading Language Ray Tracing Shader
- RealityKit Materials: Basic Gradient
- Cannot show MetalKit view inside iOS 17 widget
- Is there a better way to optimize Metal compute shaders that operate on the same texture in series?
- How can I split a single Metal render output across multiple views?
- Convert `uchar*` to `uchar4*` in Metal
- Metal resource "purgeable state" mechanics
- Rendering into multiple views with Metal
- Does AVAssetWriter somehow wait for GPU rendering affecting a CVPixelBuffer to finish?
- Safety of MTLTexture reuse across MTLCommandQueues
- UIView and nextDrawable on a multithreaded system
- Metal Core Image kernel workingColorSpace
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
It really depends on your use case.
Loading: You can probably safely load your data into a texture with the same format as that data. When your render destination has a different format, Metal will perform the conversion for you.
Intermediates: The format of intermediate textures should really depend on the "resolution" (as in "number of bits") you need, which depends on the input data and the color space. If you only handle sRGB data, 8-bit textures are probably enough (unless you do some complicated processing that requires a higher precision). If you want to support a wide gamut (e.g. in Display P3 color space), you need more precision (
halfshould be fine) and also want to be able to store values outside of the [0...255] range. On iOS I'd recommend usinghalffor memory efficiency (and since most devices don't support full float anyway), on macOSfloatis the default, I think.View: The pixel format of the view should really depend on the display. Most of the screens support the Display P3 color space now. For that, you should use the
bgra10_xrformat, since it's optimized for that case. Otherwisebgra8unormis fine.In general, you should be using a texture format with the smallest memory footprint that fits your use case.