[swift-evolution] f suffix for float32 literals, h suffix for float16 literals
scanon at apple.com
Fri Nov 3 14:37:08 CDT 2017
> On Nov 3, 2017, at 3:33 PM, Kelvin Ma <kelvin13ma at gmail.com> wrote:
> On Fri, Nov 3, 2017 at 2:05 PM, Steve Canon via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
> If/when 16b floats were added to the standard lib, you would just write:
> let vertexData: [Float16] = [ 1, 0, 0.5, 1 ]
> I should note that something like vertex coordinates is usually better modeled with a more specific type than [Float], like SCNVector4 or simd.float4 or your own type, which also solves this problem:
> import SceneKit
> let vertexData = SCNVector4(1, 0, 0.5, 1)
> import simd
> let vertexData = float4(1, 0, 0.5, 1)
> (NB both of these frameworks are Apple-specific).
> - Steve
> Sent from my iPhone
> If @_fixed_layout was supported this would be sensible, but most graphics frameworks expect a plain buffer of floats and the packing order is implicit. We can’t model vertex vectors with Swift structs because we can’t safely pointer-cast them to an array of floats.
SCNVector4 is a C struct and hence has fixed layout. simd.float4 fixes its ordering by having a single field that is an LLVM ext-vector type. Both can be safely converted to a buffer of floats.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution