[swift-evolution] f suffix for float32 literals, h suffix for float16 literals
Stephen Canon
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.
– Steve
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171103/ae1654f1/attachment.html>
More information about the swift-evolution
mailing list