1*35238bceSAndroid Build Coastguard WorkerReference Renderer Design Notes 2*35238bceSAndroid Build Coastguard Worker------------------------------- 3*35238bceSAndroid Build Coastguard Worker 4*35238bceSAndroid Build Coastguard WorkerRequirements: 5*35238bceSAndroid Build Coastguard Worker - must support arbitrary VA arrays 6*35238bceSAndroid Build Coastguard Worker - must support primitive setup reference 7*35238bceSAndroid Build Coastguard Worker - must support lines, points 8*35238bceSAndroid Build Coastguard Worker - must support instancing 9*35238bceSAndroid Build Coastguard Worker - must support vertex shading -> custom position transformations 10*35238bceSAndroid Build Coastguard Worker - flat, noperspective shading 11*35238bceSAndroid Build Coastguard Worker - multiple render targets 12*35238bceSAndroid Build Coastguard Worker - faster shading? move packet loop inside shader 13*35238bceSAndroid Build Coastguard Worker (helper class can make shader implementation easier) 14*35238bceSAndroid Build Coastguard Worker - can be extended for tessellation and geometry shading 15*35238bceSAndroid Build Coastguard Worker 16*35238bceSAndroid Build Coastguard WorkerIntegrate with: 17*35238bceSAndroid Build Coastguard Worker - sglr 18*35238bceSAndroid Build Coastguard Worker - random shader generator 19*35238bceSAndroid Build Coastguard Worker 20*35238bceSAndroid Build Coastguard WorkerUniforms: 21*35238bceSAndroid Build Coastguard Worker - shader objects can contain parameters, renderer doesn't care about them 22*35238bceSAndroid Build Coastguard Worker - can contain simple data or references to resources (textures for example) 23*35238bceSAndroid Build Coastguard Worker 24*35238bceSAndroid Build Coastguard WorkerPipeline: 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard WorkerVertex cache: 27*35238bceSAndroid Build Coastguard Worker - based on indices setup transformed vertex buffer 28*35238bceSAndroid Build Coastguard Worker - in: 29*35238bceSAndroid Build Coastguard Worker + index list 30*35238bceSAndroid Build Coastguard Worker + VS generic output count 31*35238bceSAndroid Build Coastguard Worker - out: 32*35238bceSAndroid Build Coastguard Worker + VS execution queue 33*35238bceSAndroid Build Coastguard Worker + index remap information? 34*35238bceSAndroid Build Coastguard Worker - trivial implementation: 35*35238bceSAndroid Build Coastguard Worker + run VS for all vertices at once 36*35238bceSAndroid Build Coastguard Worker 37*35238bceSAndroid Build Coastguard WorkerVertexShader: 38*35238bceSAndroid Build Coastguard Worker - provides position & point size 39*35238bceSAndroid Build Coastguard Worker - transforms other vertices 40*35238bceSAndroid Build Coastguard Worker - in: 41*35238bceSAndroid Build Coastguard Worker + VertexAttrib array 42*35238bceSAndroid Build Coastguard Worker + packet list: 43*35238bceSAndroid Build Coastguard Worker + VertexID, InstanceID (pack into some accessor?) 44*35238bceSAndroid Build Coastguard Worker + uniform ptr 45*35238bceSAndroid Build Coastguard Worker - out: 46*35238bceSAndroid Build Coastguard Worker + position 47*35238bceSAndroid Build Coastguard Worker + point size 48*35238bceSAndroid Build Coastguard Worker + array of generic transformed attributes (float/int/uint) 49*35238bceSAndroid Build Coastguard Worker 50*35238bceSAndroid Build Coastguard WorkerTessellation: 51*35238bceSAndroid Build Coastguard Worker - \todo [pyry] Define 52*35238bceSAndroid Build Coastguard Worker - replaces primitive assembly? 53*35238bceSAndroid Build Coastguard Worker 54*35238bceSAndroid Build Coastguard WorkerPrimitive assembly: 55*35238bceSAndroid Build Coastguard Worker - sets up primitives 56*35238bceSAndroid Build Coastguard Worker - gl3: triangles, points, lines (adjecency?) 57*35238bceSAndroid Build Coastguard Worker - in: 58*35238bceSAndroid Build Coastguard Worker + full primitive type 59*35238bceSAndroid Build Coastguard Worker + index list 60*35238bceSAndroid Build Coastguard Worker + position & point size from VS 61*35238bceSAndroid Build Coastguard Worker - out: 62*35238bceSAndroid Build Coastguard Worker + primitive list for rasterization / geometry shading 63*35238bceSAndroid Build Coastguard Worker + positions 64*35238bceSAndroid Build Coastguard Worker + provoking vertex for flatshading 65*35238bceSAndroid Build Coastguard Worker 66*35238bceSAndroid Build Coastguard WorkerGeometryShader: 67*35238bceSAndroid Build Coastguard Worker - in: 68*35238bceSAndroid Build Coastguard Worker + primitive list 69*35238bceSAndroid Build Coastguard Worker - out: 70*35238bceSAndroid Build Coastguard Worker + changed primitive list 71*35238bceSAndroid Build Coastguard Worker 72*35238bceSAndroid Build Coastguard WorkerCoordinate transform: 73*35238bceSAndroid Build Coastguard Worker - in: 74*35238bceSAndroid Build Coastguard Worker + primitive list 75*35238bceSAndroid Build Coastguard Worker - out: 76*35238bceSAndroid Build Coastguard Worker + coordinates after viewport transform 77*35238bceSAndroid Build Coastguard Worker + z-clipping bits 78*35238bceSAndroid Build Coastguard Worker 79*35238bceSAndroid Build Coastguard WorkerRasterizer: 80*35238bceSAndroid Build Coastguard Worker - pretty much as it is currently 81*35238bceSAndroid Build Coastguard Worker 82*35238bceSAndroid Build Coastguard WorkerFragmentShader: 83*35238bceSAndroid Build Coastguard Worker - in: 84*35238bceSAndroid Build Coastguard Worker + packet list: 85*35238bceSAndroid Build Coastguard Worker + base coordinates 86*35238bceSAndroid Build Coastguard Worker + barycentrics, both perspective and non-perspective 87*35238bceSAndroid Build Coastguard Worker + generic attribute accessor (2 or 3 vertices) 88*35238bceSAndroid Build Coastguard Worker + provoking vertex index 89*35238bceSAndroid Build Coastguard Worker + uniform ptr 90*35238bceSAndroid Build Coastguard Worker - out: 91*35238bceSAndroid Build Coastguard Worker + shaded packet list: 92*35238bceSAndroid Build Coastguard Worker + colors per render target 93*35238bceSAndroid Build Coastguard Worker + modified live mask - for discard 94*35238bceSAndroid Build Coastguard Worker - utils: 95*35238bceSAndroid Build Coastguard Worker + compute derivatives from data in SoA form 96*35238bceSAndroid Build Coastguard Worker + compute lod for texturing 97