diff --git a/src/runtimerender/graphobjects/qssgrenderlayer_p.h b/src/runtimerender/graphobjects/qssgrenderlayer_p.h
index a2400482d0769b5702e6823d565621a6c369b8c9..54724e92bfc2524a299758160b5178820aae3e71 100644
--- a/src/runtimerender/graphobjects/qssgrenderlayer_p.h
+++ b/src/runtimerender/graphobjects/qssgrenderlayer_p.h
@@ -157,7 +157,7 @@ struct Q_QUICK3DRUNTIMERENDER_EXPORT QSSGRenderLayer : public QSSGRenderNode
     qint32 aoSamplerate;
     bool aoDither;
 
-    // Direct occlusion
+    // Direct occlusion [NOT SUPPORTED]
     float shadowStrength;
     float shadowDist;
     float shadowSoftness;
diff --git a/src/runtimerender/qssgrendercustommaterialsystem.cpp b/src/runtimerender/qssgrendercustommaterialsystem.cpp
index a1cf1633a32698269df7520f0a3853fc21072116..10ecd1b03611a7c0d4c0eb96e3da088e910b9511 100644
--- a/src/runtimerender/qssgrendercustommaterialsystem.cpp
+++ b/src/runtimerender/qssgrendercustommaterialsystem.cpp
@@ -2045,6 +2045,32 @@ void QSSGMaterialSystem::prepareRhiSubset(QSSGCustomMaterialRenderContext &custo
             }
         }
 
+        if (shaderPipeline->depthTexture()) {
+            int binding = bindingForTexture(QByteArrayLiteral("depthTexture"), samplerVars);
+            if (binding >= 0) {
+                samplerBindingsSpecified.setBit(binding);
+                // nearest min/mag, no mipmap
+                QRhiSampler *sampler = rhiCtx->sampler({ QRhiSampler::Nearest, QRhiSampler::Nearest, QRhiSampler::None,
+                                                         QRhiSampler::ClampToEdge, QRhiSampler::ClampToEdge });
+                bindings.append(QRhiShaderResourceBinding::sampledTexture(binding,
+                                                                          QRhiShaderResourceBinding::FragmentStage,
+                                                                          shaderPipeline->depthTexture(), sampler));
+            } // else ignore, not an error
+        }
+
+        if (shaderPipeline->ssaoTexture()) {
+            int binding = bindingForTexture(QByteArrayLiteral("aoTexture"), samplerVars);
+            if (binding >= 0) {
+                samplerBindingsSpecified.setBit(binding);
+                // linear min/mag, no mipmap
+                QRhiSampler *sampler = rhiCtx->sampler({ QRhiSampler::Linear, QRhiSampler::Linear, QRhiSampler::None,
+                                                         QRhiSampler::ClampToEdge, QRhiSampler::ClampToEdge });
+                bindings.append(QRhiShaderResourceBinding::sampledTexture(binding,
+                                                                          QRhiShaderResourceBinding::FragmentStage,
+                                                                          shaderPipeline->ssaoTexture(), sampler));
+            } // else ignore, not an error
+        }
+
         QVarLengthArray<QRhiShaderResourceBinding::TextureAndSampler, 16> texSamplers;
         QRhiSampler *dummySampler = rhiCtx->sampler({ QRhiSampler::Nearest, QRhiSampler::Nearest, QRhiSampler::None,
                                                       QRhiSampler::ClampToEdge, QRhiSampler::ClampToEdge });
diff --git a/src/runtimerender/rendererimpl/qssgrendererimpllayerrenderdata_rhi.cpp b/src/runtimerender/rendererimpl/qssgrendererimpllayerrenderdata_rhi.cpp
index b729ab04c5cd02f27bf9abe9877b3cb267198cd0..580b718a914314182fcf05bad923809401b5e270 100644
--- a/src/runtimerender/rendererimpl/qssgrendererimpllayerrenderdata_rhi.cpp
+++ b/src/runtimerender/rendererimpl/qssgrendererimpllayerrenderdata_rhi.cpp
@@ -343,7 +343,8 @@ static bool rhiPrepareDepthPassForObject(QSSGRhiContext *rhiCtx,
         }
 
     } else if (obj->renderableFlags.isCustomMaterialMeshSubset()) {
-        // ### TODO custom materials
+        QSSGCustomMaterialRenderable &renderable(static_cast<QSSGCustomMaterialRenderable &>(*obj));
+        ps->cullMode = QSSGRhiGraphicsPipelineState::toCullMode(renderable.material.cullMode);
     }
 
     // the rest is common
diff --git a/src/runtimerender/res/effectlib/rhi/SSAOCustomMaterial.glsllib b/src/runtimerender/res/effectlib/rhi/SSAOCustomMaterial.glsllib
index bd1d500fe56031adba85cf3b6ca1a920edfdb85b..762e51c0e6dfc30aa93199ac3292dde031983866 100644
--- a/src/runtimerender/res/effectlib/rhi/SSAOCustomMaterial.glsllib
+++ b/src/runtimerender/res/effectlib/rhi/SSAOCustomMaterial.glsllib
@@ -35,7 +35,7 @@
 /*{
     "uniforms": [
         { "type": "sampler2D", "name": "depthTexture", "condition": "QSSG_ENABLE_SSDO" },
-        { "type": "sampler2D", "name": "aoTexture" }
+        { "type": "sampler2D", "name": "aoTexture" , "condition": "QSSG_ENABLE_SSAO" }
     ]
 }*/
 #endif // QQ3D_SHADER_META