- Replaced EvalData and EvalVertexData classes with a simpler DataStream class that only
accesses a single data stream, binds and unbinds it
- DataStream has both an input and an output version which avoids much of the const-ness
const-related ambiguity of the previous design pattern
- Vertex, varying and face-varying data now all have a dedicate struct (VertexData, VaryingData, FaceVaryingData)
as a way of gathering the various data-streams required to perform sampling
- renamd some "Buffers" into "Tables" for better naming consistency with Far
- remove PatchMap from FarPatchTables
- add a new FarPatchMap quad-tree class (constructed from FarPatchTables)
- refactor the EvalLimitController to use the quad-tree search instead of a
serial loop access
fixes#174
- defined a fallback value for ROTATE
- made GetPatchLevel() a macro to avoid
referencing gl_PrimitiveID from vertex shaders
- fixed float array initializers
- trivial return if Gregory specific patch data is set
- or iterate through the patch-arrays until an adaptive patch is found (REGULAR,...,GREGORY_BOUNDARY)
fixes#173
- minor refactoring of the LimitEvalContext to accomodate all the data buffers
- pushing some minor sub-patch functionality back to FarPatchParams
- extend example code with randomly generated varying vertex colors
adding an arbitrary break if vertex valence is > 256
- add a Warning function to Osd error reporting
- minor cleanup /refactor / document of OsdError
fixes#167
and adding the requisite accessors
Note : all our example code goes through the same boiler-plate texture
binding code - we might want to move it as a member function of the DrawContext.
- added boundary / corner kernel code
- bug fixes for Gregory patch kernel
- wired the new kernels in the controller class
Note 1 : corner / gregory kernels are not working yet
Note 2 : the vertex mirroring solution used for boundary / corner kernels could be incorrect...
Cleanup the batching classes so that DrawCollection() no longer caches
current batch and effect. Any kind of binding optimization will be
handled in client's delegate class.
Also remove InitializeVertexBuffer method and add some arguments to
constructor instead.