-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update normative language #1997
Conversation
I started a review of the changes, but it's pretty large. I locally took some notes (a bit of nitpicking, and some things that I wondered about, but where, at some point, I have to assume that they have been sorted out in certain issues, and the changes here are just the result of a larger discussion). Two things for the process:
|
Since inline comments naturally support threading, I'd prefer to use them since the diff is indeed large (although most of it is trivial). Feel free to ask about any confusing changes. |
I started running through this and soon noticed a lot of omission of definite & indefinite articles (such as "the keyword", "a buffer", "an object") where they're grammatically appropriate. On the grand scale of things this is more jarring to read than a spec bug, and I didn't try to enumerate them past the first few examples. But it is still worth addressing. |
You're right. This is a long-standing issue since the very first glTF drafts. |
The missing articles are something that I also noticed, but saw it in the same way as oddhack: It's usually not relevant for the correctness or preciseness of the spec itself. But to be concrete: Should/could this be addressed in this review? These could be many small comments, and it may cause some noise that distracts from possibly more important aspects that are actually supposed to be reviewed here. Another option would be to really focus on the normative/spec aspect here, and do a dedicated pass with editorial changes later. The corresponding PR could probably be reviewed quickly and easily, because it would just insert some (This is somehow related to the question about the timeline. I think it was mentioned in the calls (or maybe the mail thread?), but: When is the the deadline for this update?) |
We have two deadlines:
Neil |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reviewed as far as the beginning of the Geometry section – will try to review further soon!
|
||
The following documents are referenced by normative sections of the specification: | ||
|
||
==== External Specifications |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In rendered form it's difficult to find something quickly among these references, because the keywords are somewhere in the middle of the line. Would it be appropriate to put the title first, rather than the source, or prefix with a keyword like "JSON"?
Implementations should use the image type pattern matching algorithm from the https://mimesniff.spec.whatwg.org/#matching-an-image-type-pattern[MIME Sniffing Standard] to detect PNG and JPEG images as file extensions may be unavailable in some contexts. | ||
==== | ||
[[file-extensions-and-media-types]] | ||
== File Extensions and Media Types |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand why the use of a .gltf
extension for JSON glTF files is not required — we don't want to prohibit use cases like REST APIs, or perhaps like .vrm
.
But, is it worth including some language that normatively prohibits a JSON glTF file using a .glb
prefix, or a binary GLB file using .gltf
? Such mixups would be unfortunate.
@@ -572,20 +735,26 @@ The following example defines two buffer views: the first is an ELEMENT_ARRAY_BU | |||
} | |||
---- | |||
|
|||
When a buffer view is used for vertex attribute data, it may have a `byteStride` property. This property defines the stride in bytes between each vertex. | |||
When a buffer view is used for vertex attribute data, it **MAY** have a `byteStride` property. This property defines the stride in bytes between each vertex. Buffer views with other types of data **MUST NOT** not define `byteStride`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be valid for an extension to define a new "kind" of data that supports interleaving? Trying to accommodate EXT_mesh_gpu_instancing
instance attributes and perhaps future extensions here.
I went through the remaining document. (Sorry, some comments are "nitpicking" about formatting, but I hope that they are not too distracting). One (inlined) point that might relevant for the "normativeness" is: In how far can the Filtering behavior be prescribed (e.g. the necessity to be able to generate MipMaps)? Other, general points:
This may just be a lack of understanding on my side:
Formatting/linking issues:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To summarize: I did not find any obvious issues. Some details are discussed in the inlined and PR comments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did another quick pass, focussing on the changes, and think that they indeed add clarity. I cannot say much about the fallback behavior for the MipMapping on a technical level, but reducing the requirement from MUST to SHOULD IMHO makes sense, because it's usually beyond the control of the client.
No further comments for now, except for a detail regarding the ROWS * SIZE_OF_COMPONENT
part (inlined).
Let's continue the refinements in #1901. |
General updates
Specific updates
bufferView.byteStride
for buffer views that do not contain vertex attributes.