-
Notifications
You must be signed in to change notification settings - Fork 0
/
plan.txt
81 lines (69 loc) · 3.48 KB
/
plan.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
*** Quality of life for sample building
* SetGlobal for constant&resource to always bind a certain texture for a given name in shader.
* Make constant/resource not found a warning.
* Hex uint literals. binary too?
* Warning instead of error for missing constant.
* Warnings as error setting.
* Defines that are usable within the RLF and shader.
* Integrate RenderDoc capture?
* Investigate automatically reloading any time a file is updated.
* Dynamic flow control?
* Some way to only run a pass on the first frame, for instance.
* Some way to choose which shader to run based on some condition.
**** Expand D3D feature support.
* Texture arrays, cubes, 3d textures.
* Append and consume buffers.
*** Cleanup:
* Parser errors which happen post-consume point to the token after the one actually in question
* Handle various errors in specifying views/resources (mainly providing the wrong kind).
* Check bounds of viewport expressions are valid, throw error or warning?
* Texture flag cleanup -> SRV/UAV/RTV/DSV can be determined from usage. or keep it explicit?
* Buffer flags too, especially where in D3D12 the flags don't mean anything but in d3d11 they do
* Make obj parsing handle not having normals or UVs.
*** STL removal
* STL makes using code surprisingly slow with allocations and locks.
* have linear allocators on a per-lifetime basis, such as for each intermediate phase like parsing .
* will need to recreate some amount of containers and string utilities to do so.
*** Input/output refactor
* Add inputs
* Perhaps tuneables would need to be integrated? What would a tuneable within a sub-rlf mean?
* should include all types usable in tuneables, as well as resources
* Then we can have an rlf invoke a sub-rlf to allow logic reuse.
* Probably implement as a separate RenderDescription for the sub-rlf?
* Will need to remove use of statics in parse and interpreter.
*** Shader parser
* Deducing struct sizes
* Support nested anonymous structs
* Support includes
* Support defines
* Error messages
* file/line/location of occurence
* Maybe I should make the tokenizer code common between the rlf and shader parsers?
*** D3D12
* Handle when user errors cause a device removal
* Can we recreate the device and continue?
* It seems the intent of root signatures is that you use a shared one between all shaders, does it make sense to rewrite that to match?
*** AST expressions to
* Add clamp, saturate
* Rounded up divide
*** Obj import expansion
* Support material parameters from obj files.
* Support more of the textures provided in an obj.
*** UI:
* Event-viewer style list of the passes in a frame.
* Shader constants display should handle vector/matrix/array types.
* Debug viz tools for seeing the contents of textures/buffers/rendertargets/depthstencils at any given point in the frame.
* Sample browser for faster way to open various samples for testing
* Display pane
* Ability to show multiple outputs, when the rlf input/output system has been refactored.
* Prevent it from being undocked from the center?
* Options for how to display the texture, like renderdoc (alpha, ranges, etc).
* Changing this should fix the issue where imgui blends Image() with the window background if alpha is not 1.
Samples:
* Shadow-sampling methods comparison.
* Clustered lighting.
* Compute-based culling with draw-indirect.
* Mirror reflection.
* Compute fluid simulation.
* Compute sorted triangles for transparency rendering.
* Deferred rendering with gbuffers.