Unity implementation of the paper Real-time non-photorealistic animation for immersive storytelling in “Age of Sail” (alt link).
Using Jasper Flick/Catlike Coding's Custom SRP Project as a base for the Rendering Pipeline.
Disclaimer: I want to emphasize that this project is an experiment and does not prioritize aesthetic appeal or extensive comments of the rendering pipeline code. If certain elements are unclear or if you encounter issues, please feel free to reach out for clarification. Additionally, be aware that the code may exhibit poor memory management and excessive garbage collection allocation, particularly in the AoS Alternative Render Pipeline.
Implementation (based on the Paper):
-
- MetaTexture
- 3.1. Texture scales and blend coefficients
- 3.2. Approximate smooth UV gradients
- 3.3. Compensating for radial angle
- 3.4. Compensating for skew
- 3.5. Orienting texture to indicate contour
- 3.6. Compensating for contrast reduction
-
- Edge Breakup
- 4.1. Edge inflation
- 4.2. Animated line boil
- 4.3. Compensating for camera roll
- 4.4. Compensating for distance
-
- The Rendering Pipeline
- Warp Pass
- Shadow Pass
- Blur Pass
- 5.1. Shadow shapes, inner glow, and indication
- 5.2. Color control
-
- Applications
- Not planned.
Additions:
- Mesh importer that creates proper normals for edge inflation (especially for facetted meshes with non smooth normals).
- Mesh importer support for open meshes (like planes, tubes, etc.).
- Alternative render pipeline (AoSA RP) supporting colored lights.
- supports up to 10 lights (directional, point, and spot) with blurred shadows and specular highlights.
Blue indicates a rendering pass, and yellow an image-processing pass.