1 Reference Renderer Design Notes
2 -------------------------------
5 - must support arbitrary VA arrays
6 - must support primitive setup reference
7 - must support lines, points
8 - must support instancing
9 - must support vertex shading -> custom position transformations
10 - flat, noperspective shading
11 - multiple render targets
12 - faster shading? move packet loop inside shader
13 (helper class can make shader implementation easier)
14 - can be extended for tessellation and geometry shading
18 - random shader generator
21 - shader objects can contain parameters, renderer doesn't care about them
22 - can contain simple data or references to resources (textures for example)
27 - based on indices setup transformed vertex buffer
30 + VS generic output count
33 + index remap information?
34 - trivial implementation:
35 + run VS for all vertices at once
38 - provides position & point size
39 - transforms other vertices
43 + VertexID, InstanceID (pack into some accessor?)
48 + array of generic transformed attributes (float/int/uint)
52 - replaces primitive assembly?
56 - gl3: triangles, points, lines (adjecency?)
60 + position & point size from VS
62 + primitive list for rasterization / geometry shading
64 + provoking vertex for flatshading
70 + changed primitive list
76 + coordinates after viewport transform
80 - pretty much as it is currently
86 + barycentrics, both perspective and non-perspective
87 + generic attribute accessor (2 or 3 vertices)
88 + provoking vertex index
92 + colors per render target
93 + modified live mask - for discard
95 + compute derivatives from data in SoA form
96 + compute lod for texturing