Files
2026-07-13 13:13:17 +08:00

388 lines
12 KiB
Plaintext

{
"FormatVersion": 3,
"Id": "22bb4788-d97a-4457-b6d1-1fc9ffe4f9ff"/*TXAA*/,
"Description": "Temporal anti-aliasing (TXAA) that smooths edges and reduces specular flickering by accumulating frames rendered with sub-pixel camera jitter.\n\nThe previous result is reprojected with the camera motion (reconstructed from the depth map and the camera reference), so the accumulation stays stable while the camera moves. The required sub-pixel jitter is applied automatically by [Camera] and [OrbitCamera] through the _TXAA_JitterOffset context variable that this operator sets while rendering.\n\nRequirements:\n\n- All rendered content must write to the depth buffer. Content without depth (e.g. [Layer2d] with depth writing disabled) breaks the reprojection and smears or vibrates.\n- The scene camera must be connected to CameraReference so its matrices are available for reprojection.\n\nAKA: TAA, temporal anti-aliasing, temporal supersampling\n\nTips:\n\n- Judge the result in motion — a still comparison flatters the aliased original, whose extra \"sharpness\" is partly false detail.\n- Thin sub-pixel lines and content that intentionally flickers every frame cannot be fully stabilized; render lines at least one pixel wide.\n- After a hard camera cut, use Reset to clear the accumulated history for one frame.\n- The source [RenderTarget] doesn't require MSAA.",
"SymbolTags": "1216",
"InputUis": [
{
"InputId": "19b07ddf-ba1e-4f8b-b476-e93485348e91"/*Image*/,
"Relevancy": "Required",
"Position": {
"X": -225.14397,
"Y": 944.8822
},
"Description": "The rendered scene color to be anti-aliased. Must come from the same render pass and camera as DepthMap."
},
{
"InputId": "24b786f7-75d2-47d4-96e8-f7fcf0cc9258"/*DepthMap*/,
"Relevancy": "Required",
"Position": {
"X": 131.33911,
"Y": 895.63794
},
"Description": "The scene's depth buffer, used to reconstruct where each pixel was in the previous frame. All content must write depth, otherwise it smears or vibrates."
},
{
"InputId": "414b89a2-128c-40c1-a3c7-137a788bb320"/*CameraReference*/,
"Relevancy": "Required",
"Position": {
"X": 131.33911,
"Y": 790.6382
},
"Description": "Reference output of the scene camera ([Camera] or [OrbitCamera]). Its matrices drive the reprojection of the previous frame."
},
{
"InputId": "5d6e7f80-91a2-43b4-8506-7d8e9f011223"/*BlendFactor*/,
"Position": {
"X": -225.14398,
"Y": 573.38007
},
"Description": "How much of the accumulated history is kept each frame. Higher values are smoother and more stable but react slower to changes; lower values are sharper but flicker more. Typical range: 0.85 … 0.93.",
"Min": 0.0,
"Max": 1.0,
"ClampMin": true,
"ClampMax": true
},
{
"InputId": "6e7f8091-a2b3-44c5-9607-8e9f01122334"/*NeighborhoodClamp*/,
"Position": {
"X": -225.14398,
"Y": 608.38007
},
"Description": "Widens the color range the history is allowed to differ from the current frame. 0 is strict: crisp and ghost-free, but noisy details (speculars, thin lines) keep flickering. Higher values smooth such flickering at the risk of ghost trails behind moving content.",
"Min": 0.0,
"Max": 1.0,
"ClampMin": true
},
{
"InputId": "6e95bd44-ebf7-44a3-b98e-dea871a676a4"/*SampleCount*/,
"Position": {
"X": -468.96283,
"Y": -275.29044
},
"Description": "Length of the repeating sub-pixel jitter pattern (a Halton sequence). It does not affect rendering speed. 8 or 16 are typical; higher values distribute the samples more finely but take longer to converge.",
"AddPadding": "True"
},
{
"InputId": "7f8091a2-b3c4-45d6-a708-9f0112233445"/*MotionThreshold*/,
"Position": {
"X": -225.14398,
"Y": 643.38007
},
"Description": "Screen-space motion (as a fraction of the image size) above which the history is discarded. A safety net for jumps and cuts that the reprojection can't follow — keep it high (0.1 or more) so it doesn't reduce quality during normal camera motion.",
"Min": 0.0,
"Max": 0.2,
"ClampMin": true
},
{
"InputId": "8091a2b3-c4d5-46e7-b809-011223344556"/*DepthRejection*/,
"Position": {
"X": -225.14398,
"Y": 678.38007
},
"Description": "World-space distance above which a surface is treated as newly revealed (disocclusion) and its history is rejected. Smaller values give harder, cleaner edges when objects move in front of each other; too small rejects history everywhere.",
"Min": 0.0,
"Max": 2000.0,
"ClampMin": true
},
{
"InputId": "91a2b3c4-d5e6-47f8-8910-112233445566"/*Reset*/,
"Position": {
"X": -365.14404,
"Y": 713.37976
},
"Description": "Discards the accumulated history for this frame. Trigger on hard camera cuts to avoid a brief smear."
}
],
"SymbolChildUis": [
{
"ChildId": "044e99cf-87e8-4e61-9a33-84c9bd4d5dc0"/*ResolutionConstBuffer*/,
"Position": {
"X": 271.3391,
"Y": 755.6376
}
},
{
"ChildId": "0593d9eb-c223-4a59-a563-2fd71d15ae46"/*Rasterizer*/,
"Position": {
"X": 554.3517,
"Y": 489.02124
}
},
{
"ChildId": "06f47ba0-274f-4864-823e-bdc4fdf41c79"/*PickTexture*/,
"Position": {
"X": 958.2169,
"Y": 111.63057
}
},
{
"ChildId": "1791380e-a349-4a60-9fc0-704ec206ba38"/*Draw*/,
"Position": {
"X": 554.3517,
"Y": 594.02124
}
},
{
"ChildId": "1d873630-1c44-42bd-a9dd-279d18e3b06e"/*FloatsToBuffer*/,
"Position": {
"X": -85.14398,
"Y": 538.38007
}
},
{
"ChildId": "25049fb2-0b47-4c2f-afca-1044b5c02fe4"/*BoolToFloat*/,
"Position": {
"X": -225.14398,
"Y": 713.37976
}
},
{
"ChildId": "25b812c6-c4ce-4ac2-8105-ff4956d9207b"/*_TransformsCBufferFromCam*/,
"Position": {
"X": -1178.4167,
"Y": 1598.534
}
},
{
"ChildId": "47d0712b-e14a-4e14-b0dc-4ffde500d710"/*OutputMergerStage*/,
"Position": {
"X": 554.3516,
"Y": 524.02124
}
},
{
"ChildId": "54f2fe80-4554-4ba4-b8d2-fc574b07147f"/*SetObjectVar*/,
"Position": {
"X": -636.82654,
"Y": 1698.5961
}
},
{
"ChildId": "5b3f6c6a-f99b-4c7a-a5a2-804669a5420a"/*RenderTarget*/,
"Position": {
"X": 649.3823,
"Y": 137.6972
}
},
{
"ChildId": "5b41322a-2d8c-4483-96b3-55fa6e3f9485"/*SamplerState*/,
"Position": {
"X": 271.3391,
"Y": 965.6382
}
},
{
"ChildId": "6966569d-a742-4969-bf8b-a5a41fc9f078"/*UseTextureReference*/,
"Position": {
"X": -328.6037,
"Y": 104.9568
}
},
{
"ChildId": "6d526d6c-85e8-4f3a-ae0f-0b6bc1aa5443"/*Execute*/,
"Position": {
"X": 694.3517,
"Y": 454.02124
}
},
{
"ChildId": "714ab89c-548e-4d4a-92c0-c01d04e43931"/*UseTextureReference*/,
"Position": {
"X": -328.60367,
"Y": 326.69193
}
},
{
"ChildId": "733867c2-7bdb-42a1-9c0c-ded3beaf7241"/*InputAssemblerStage*/,
"Position": {
"X": 554.3517,
"Y": 454.02124
}
},
{
"ChildId": "737e4753-7dd5-4f77-97ce-249bf80599a1"/*RenderTargetBlendDescription*/,
"Position": {
"X": 274.35162,
"Y": 524.02124
}
},
{
"ChildId": "778029d6-42b3-4ff9-bce4-d269115be2ee"/*Vector3Components*/,
"Position": {
"X": -1434.1462,
"Y": 1319.5575
}
},
{
"ChildId": "77f6bed6-e504-4da5-8e58-85cc0ec92135"/*Vec2JitterOffset*/,
"Position": {
"X": 148.85208,
"Y": -287.79446
}
},
{
"ChildId": "7ef5a288-892c-4872-8f65-26befb9dd6c2"/*Mod 2*/,
"Position": {
"X": -405.6495,
"Y": -51.644196
}
},
{
"ChildId": "7fb62317-c1e8-420e-b506-deb005b44634"/*SetPixelAndVertexShaderStage*/,
"Position": {
"X": 411.3391,
"Y": 650.6381
}
},
{
"ChildId": "826b3cc1-797d-4d5d-a3cb-306a6cc76e07"/*_TransformsCBuffer*/,
"Position": {
"X": -1138.8926,
"Y": 1450.2217
}
},
{
"ChildId": "8e999040-43b4-4704-a4cd-334a1de217ea"/*SrvFromTexture2d*/,
"Position": {
"X": 271.3391,
"Y": 930.63794
}
},
{
"ChildId": "93932d0c-0318-40c7-a710-8d5c32f79d7a"/*+1*/,
"Position": {
"X": -405.6495,
"Y": -86.644196
}
},
{
"ChildId": "9424bdce-93cb-46b0-b544-eaca15a94611"/*PixelShader*/,
"Position": {
"X": 271.3391,
"Y": 685.6381
}
},
{
"ChildId": "97539374-0583-49ce-90f8-dc263f6ada44"/*RasterizerState*/,
"Position": {
"X": 414.35165,
"Y": 489.02124
}
},
{
"ChildId": "a1b4a2a3-2cec-40c3-9179-81db94e32bc6"/*SetVec2Var*/,
"Position": {
"X": 577.55066,
"Y": -192.1865
}
},
{
"ChildId": "a55adcb3-615a-4a6e-a301-f8385288d53d"/*TimeConstBuffer*/,
"Position": {
"X": -1169.6428,
"Y": 1514.3683
}
},
{
"ChildId": "af0de6a1-220b-4682-bb96-41153b2349da"/*SrvFromTexture2d*/,
"Position": {
"X": 271.3391,
"Y": 895.63794
}
},
{
"ChildId": "beaeecbb-11af-4573-82ab-267229aeba08"/*_TransformsCBufferFromCam*/,
"Position": {
"X": 271.3391,
"Y": 790.6382
}
},
{
"ChildId": "bfb4a41f-1860-4a14-9511-60ab1b3b77a9"/*BlendState*/,
"Position": {
"X": 414.35162,
"Y": 524.02124
}
},
{
"ChildId": "c25c64b0-68b1-4797-8aad-118b6a97e1c3"/*CountInt*/,
"Position": {
"X": -405.6495,
"Y": -121.644196
}
},
{
"ChildId": "c67a6164-db27-46e6-a953-22ba6add028f"/*PickTexture*/,
"Position": {
"X": -53.08734,
"Y": 150.92499
}
},
{
"ChildId": "d1a4bfc2-0b3b-4200-a829-3d04d52a0021"/*RenderTarget*/,
"Position": {
"X": 649.3824,
"Y": -7.4324036
}
},
{
"ChildId": "d31a513d-2298-41aa-b949-56abe8ee0798"/*SrvFromTexture2d*/,
"Position": {
"X": 271.3391,
"Y": 860.63794
}
},
{
"ChildId": "d44e4397-0230-47b3-b16e-5467af598179"/*VertexShader*/,
"Position": {
"X": 271.3391,
"Y": 650.6381
}
},
{
"ChildId": "d8916c2e-6469-4082-8dc8-9a18d7666163"/*GetTextureSize*/,
"Position": {
"X": 71.088745,
"Y": 395.33008
}
},
{
"ChildId": "e6e75fd2-f6cc-4461-9618-341a65ed1ead"/*FloatsToBuffer*/,
"Position": {
"X": -1294.1462,
"Y": 1284.5574
}
},
{
"ChildId": "f1591381-80e7-468c-b382-55dcef676489"/*ExecuteTextureUpdate*/,
"Position": {
"X": 1098.2169,
"Y": 76.63057
}
},
{
"ChildId": "f91c7f8a-5266-49bc-90f2-7f02460d1c72"/*Mod 2*/,
"Position": {
"X": 818.2169,
"Y": 181.63057
}
},
{
"ChildId": "fe7062b8-6558-4e2c-b794-8e91460653c5"/*ScaleVector2*/,
"Position": {
"X": 344.73483,
"Y": -269.08847
}
}
],
"OutputUis": [
{
"OutputId": "bb809d80-6e56-4d3f-b055-85a5ce2f0564"/*Output*/,
"Position": {
"X": 1098.2169,
"Y": 181.63057
}
}
]
}