We’re very happy to announce the availability of the Unity 6 version of the deep-dive technical e-book The Universal Render Pipeline for advanced Unity creators.
It covers major Unity 6 features like Adaptive Probe Volumes (APVs), the Render Graph system, GPU Resident Drawer, GPU Occlusion Culling, and the production-ready version of the GPU Lightmapper. Previous additions like applying decals, URP quality settings and converters, comparing rendering paths to include Forward+, Full Screen Shader Graph including custom post-processing, LOD Crossfade, the SubmitRenderRequest API, and much more are also included and updated for Unity 6.
Along with this e-book, we created a tutorial on one of the new Unity 6 features for SRP, the Render Graph. You can watch it here:
A little late to this party, but the Example provided (in the e-book) for the Tint feature using RenderGraph, does not work. There are some obvious easy fixes (like, the MaterialPropertyBlock never being initialized), but the scale of the blit texture is not correct. Would it be possible to get a corrected example?
Thanks, I can see there’s also some small mistakes with characters, we will have a look thanks for checking. In the meantime this video can help you with the topic perhaps: https://www.youtube.com/watch?v=U8PygjYAF7A
I appreciate you taking the time to respond to this. Excited to have some good documentation.
I did end up using the method in the video you linked, but would I prefer to use the builder(ish) pattern provided in e-book. I look forward to the revisions!
Delete the existing code in the Create method. Create a new TintPass using the custom
constructor. Define the renderPassEvent and configure the input and add an OnEnable event handler to initialize the MaterialPropertyBlock.
public override void Create()
{
m_pass = new TintPass(passMaterial, name);
m_pass.renderPassEvent = injectionPoint;
m_pass.ConfigureInput(requirements);
}
public void OnEnable()
{
if(s_SharedPropertyBlock == null)
s_SharedPropertyBlock = new MaterialPropertyBlock();
}
This is similar to my approach for resolving that issue. The primary area of concern is between Step 7 and 8
Specifically, the code in the ExecuteMainPass() method. With the initial implementation (prior to adding the FrameBufferFetch logic) the DrawProcedural call outputs a 16x16 render texture. The documentation indicates that this should work without the FrameBufferFetch, and just using the BlitTexture method in the previous pass. It seems like the _BlitScaleBias property is not properly getting set for a ShaderGraph shader using the URPBufferPass to get the _BlitTexture…but I could be wrong!