Shading Models Reference — Built-in BRDFs & Custom Models着色模型参考 — 内置 BRDF 与自定义模型
What is a Shading Model in UE5?什么是 UE5 中的着色模型?
A shading model (or BRDF model) defines how a surface responds to light — specifically, the mathematical function that computes the ratio of outgoing radiance to incoming irradiance for a given surface point. In UE5, each pixel in the GBuffer stores a shading model ID (packed in GBufferA.a as a 4-bit integer). The deferred lighting pass reads this ID and dispatches to the correct BRDF evaluation code.
着色模型(或 BRDF 模型)定义了表面如何响应光照—— 具体来说,是计算给定表面点处出射辐射率与入射辐照度之比的数学函数。 在 UE5 中,GBuffer 中的每个像素存储一个着色模型 ID (以 4 位整数打包在 GBufferA.a 中)。延迟光照通道读取这个 ID 并分发到正确的 BRDF 计算代码。
Every shading model maps to a set of GBuffer slots. UE packs multiple values per render target channel (e.g., roughness + metallic + specular into GBufferB). Different shading models repurpose these slots for their own parameters. This is why switching a material's shading model changes what inputs are visible in the Material Editor.
每个着色模型映射到一组 GBuffer 槽位。UE 将多个值打包进每个渲染目标通道 (例如,将粗糙度 + 金属度 + 高光度打包到 GBufferB)。不同的着色模型重新用途化这些槽位 用于各自的参数。这就是为什么更改材质着色模型会改变材质编辑器中可见输入项的原因。
Default Lit — Industry-Standard PBRDefault Lit — 行业标准 PBR
The standard physically-based rendering (PBR) model used for the vast majority of surfaces: metals, plastics, stone, painted surfaces, etc. It combines a Lambertian diffuse (or Burley normalized diffuse for more accurate energy conservation) with a GGX specular BRDF using the Smith masking-shadowing function and Schlick Fresnel.
用于绝大多数表面(金属、塑料、石材、涂漆表面等)的标准基于物理的渲染(PBR)模型。 它将 Lambert 漫反射(或 Burley 归一化漫反射以获得更精确的能量守恒) 与使用 Smith 掩蔽-遮蔽函数和 Schlick Fresnel 的 GGX 镜面 BRDF 结合。
The Math数学原理
// GGX (Trowbridge-Reitz) Normal Distribution Function // Probability that microfacets are oriented exactly toward H (half-vector) // α = Roughness² (Disney remapping — more linear perceptual response) float D_GGX(float α, float NoH) { float a2 = α * α; float d = (NoH * a2 - NoH) * NoH + 1.0; // = (NoH²(a2-1)+1) return a2 / (PI * d * d); } // Smith Joint Masking-Shadowing (height-correlated, GGX variant) // Accounts for the probability that the ray from L and V are not occluded float Vis_SmithJointApprox(float α, float NoV, float NoL) { float a = α; float LambdaV = NoL * (NoV * (1 - a) + a); float LambdaL = NoV * (NoL * (1 - a) + a); return 0.5f * rcp(LambdaV + LambdaL); } // Schlick Fresnel Approximation // F0 = specular reflectance at normal incidence // For dielectrics: F0 ≈ ((IOR-1)/(IOR+1))² (water=0.02, glass=0.04) // For metals: F0 = BaseColor (tinted specular) float3 F_Schlick(float3 F0, float VoH) { float Fc = pow5(1 - VoH); return Fc + (1 - Fc) * F0; } // Full Specular BRDF: f_spec = D · Vis · F // (where Vis already includes the 1/(4·NoL·NoV) denominator) float3 SpecularGGX(float Roughness, float3 SpecColor, BxDFContext Context) { float α = Roughness * Roughness; float D = D_GGX(α, Context.NoH); float Vis = Vis_SmithJointApprox(α, Context.NoV, Context.NoL); float3 F = F_Schlick(SpecColor, Context.VoH); return (D * Vis) * F; } // Full Default Lit BRDF: // f = Diffuse_Lambert(BaseColor * (1-Metallic)) + SpecularGGX(F0, Roughness) // where F0 = lerp(0.04, BaseColor, Metallic)
Key Material Inputs关键材质输入
| Input输入 | Meaning & Range含义与范围 |
|---|---|
| Base Color | Albedo (diffuse color for dielectrics, specular tint for metals). RGB [0–1], avoid values below 0.05 or above 0.95.反照率(电介质的漫反射颜色,金属的镜面色调)。RGB [0–1],避免低于 0.05 或高于 0.95 的值。 |
| Metallic | 0 = dielectric (plastic/stone), 1 = conductor (gold/chrome). Binary in practice; avoid intermediate values except blended surfaces.0 = 电介质(塑料/石材),1 = 导体(金/铬)。实际使用中为二值;除混合表面外避免中间值。 |
| Roughness | 0 = perfect mirror, 1 = fully diffuse. Controls GGX α (internally squared). Perceptually linear.0 = 完美镜面,1 = 完全漫射。控制 GGX α(内部平方)。感知线性。 |
| Specular | F0 scale for dielectrics only [0–1] → remapped to [0–0.08]. Default 0.5 = F0 of 0.04 = most plastics. Do not use to darken metals.仅用于电介质的 F0 缩放 [0–1] → 重映射到 [0–0.08]。默认 0.5 = F0 为 0.04 = 大多数塑料。不要用于使金属变暗。 |
| Normal | Tangent-space normal map. Perturbs the shading normal N, affecting both diffuse and specular.切线空间法线贴图。扰动着色法线 N,同时影响漫射和镜面。 |
Unlit — No Lighting EvaluationUnlit — 无光照计算
The surface emits exactly its Emissive Color value with no BRDF computation at all. No diffuse, no specular, no shadows applied. Ideal for: holographic displays, neon signs, fire/explosion particles, sky domes, any surface that should not respond to scene lighting. The GBuffer stores only the emissive value and the pixel bypasses the entire deferred lighting pass.
表面发射其 Emissive Color 值,完全不进行 BRDF 计算。没有漫射、没有镜面、不应用阴影。适用于:全息显示、霓虹灯、火焰/爆炸粒子、天穹、任何不应响应场景光照的表面。GBuffer 仅存储自发光值,像素完全跳过延迟光照通道。
Subsurface — Simple Wrap Lighting SSSSubsurface — 简单包裹光照次表面散射
A cheap approximation of subsurface scattering (SSS) using a modified diffuse term that "wraps" around the terminator (the shadow boundary). Real skin, wax, marble, and jade all scatter light that enters the surface back out from nearby points — this model fakes that by softening the shadow boundary and adding a tinted subsurface color on the shadow side.
使用修改后的漫射项("包裹"明暗交界线)对次表面散射(SSS)进行廉价近似。 真实皮肤、蜡、大理石和玉石都会散射进入表面的光线并从附近点射出—— 此模型通过软化阴影边界并在阴影侧添加有色次表面颜色来模拟这一现象。
// SubsurfaceBxDF (ShadingModels.ush) — simplified float3 SubsurfaceBxDF(FGBufferData GBuffer, float3 L, float3 V, FAreaLight AreaLight) { // Standard PBR specular (same as Default Lit) float3 Spec = SpecularGGX(GBuffer.Roughness, GBuffer.SpecularColor, Context); // Wrap diffuse: extends the diffuse lit region past the terminator // WrapAmount in [0,1]: 0 = Lambert, 1 = full wrap (backlit) float WrapNoL = saturate((NoL + WrapAmount) / (1 + WrapAmount)); float3 DiffuseLighting = Diffuse_Lambert(GBuffer.DiffuseColor) * WrapNoL; // Subsurface contribution: tinted by SubsurfaceColor, blended on shadow side // SubsurfaceColor stored in GBuffer.CustomData.rgb float SubsurfaceContrib = saturate(-NoL * 0.5 + 0.5); // peaks at back-lit float3 Subsurface = GBuffer.SubsurfaceColor * SubsurfaceContrib; return (DiffuseLighting + Subsurface + Spec) * LightColor * NoL_clamped; }
When to use: Candles, wax, plastic, gemstones, stylized skin where you want hint of SSS without the cost of a screen-space blur. For hero character skin, use Subsurface Profile instead.
适用场景:蜡烛、蜡、塑料、宝石、需要 SSS 效果但不想付出屏幕空间模糊代价的风格化皮肤。对于英雄角色皮肤,请改用 Subsurface Profile。
PreIntegrated Skin — LUT-Based Fast SSSPreIntegrated Skin — 基于 LUT 的快速 SSS
A step up from Subsurface: instead of a simple wrap formula, it looks up a pre-baked 2D LUT
(PreIntegratedSkinBRDF.tga) indexed by (curvature × NdotL). The LUT
encodes the integrated diffuse response of a Gaussian scattering profile for skin.
It produces a characteristic warm red scatter at the shadow boundary without any screen-space pass.
比 Subsurface 更进一步:不是简单的包裹公式,而是查找以 (曲率 × NdotL) 为索引的
预烘焙 2D LUT(PreIntegratedSkinBRDF.tga)。LUT 编码了皮肤高斯散射剖面的积分漫射响应。
它在阴影边界产生特有的暖红色散射,无需任何屏幕空间通道。
When to use: NPC/background characters that need believable skin at lower cost than Subsurface Profile. Good for mobile targets where the screen-space blur pass of Subsurface Profile is too expensive.
适用场景:需要可信皮肤但成本低于 Subsurface Profile 的 NPC/背景角色。对于 Subsurface Profile 的屏幕空间模糊通道过于昂贵的移动端目标来说是好选择。
Subsurface Profile — High-Quality Burley SSSSubsurface Profile — 高质量 Burley SSS
The highest-quality SSS in UE5. It uses a Burley normalized diffusion profile combined with a screen-space separable Gaussian blur to simulate the actual transport of light through skin, wax, or marble. The scatter radius and color tint are defined by a Subsurface Profile asset — a data asset that specifies the scatter falloff per color channel (red scatters furthest in skin, ~5–10mm; green ~2–3mm; blue ~1mm).
UE5 中最高质量的 SSS。它使用 Burley 归一化扩散剖面结合 屏幕空间可分离高斯模糊来模拟光线穿过皮肤、蜡或大理石的实际传输。 散射半径和颜色色调由 Subsurface Profile 资产定义—— 该数据资产按颜色通道指定散射衰减(红色在皮肤中散射最远,约 5–10mm;绿色约 2–3mm;蓝色约 1mm)。
When to use: Hero characters (faces, hands), high-quality skin rendering, marble/jade/wax where scatter pattern matters. Requires assigning a SubsurfaceProfile asset to the material. Create one in Content Browser: right-click → Materials → Subsurface Profile.
适用场景:英雄角色(面部、手部)、高质量皮肤渲染、散射图案重要的大理石/玉石/蜡。需要为材质分配 SubsurfaceProfile 资产。在内容浏览器中创建:右键 → Materials → Subsurface Profile。
Clear Coat — Two-Layer Lacquered SurfaceClear Coat — 双层清漆表面
Models surfaces with a transparent coating over a different base material — car paint (clear lacquer over colored pigment), lacquered wood, phone screens, carbon fiber. It evaluates two specular BRDFs: one for the smooth coating layer (always low roughness) and one for the base material. Critically, it also handles the energy transfer between layers — the coating partially absorbs the light that reaches the base.
模拟不同基础材质上有透明涂层的表面——汽车油漆(有色颜料上的清漆)、漆木、手机屏幕、碳纤维。 它计算两个镜面 BRDF:一个用于光滑涂层(始终低粗糙度),一个用于基础材质。 关键是,它还处理层之间的能量传递——涂层部分吸收到达基础层的光。
// ClearCoatBxDF (ShadingModels.ush) float3 ClearCoatBxDF(FGBufferData G, ...) { // Clear coat layer (always smooth, ~Roughness=0.01–0.1) float ClearCoat = G.CustomData.x; // [0,1] coat thickness float ClearCoatRoughness= G.CustomData.y; // coat roughness float3 CoatSpec = SpecularGGX(ClearCoatRoughness, 0.04, Context); // Energy loss to the base: coat absorbs some light float3 CoatAttenuation = 1 - ClearCoat * CoatSpec; // Base layer (full GGX with material Roughness + BaseColor) float3 BaseSpec = SpecularGGX(G.Roughness, G.SpecularColor, Context); float3 BaseDiff = Diffuse_Lambert(G.DiffuseColor); return CoatSpec * ClearCoat // coat specular + (BaseSpec + BaseDiff) * CoatAttenuation; // base, attenuated }
Additional inputs: Clear Coat (intensity 0–1), Clear Coat Roughness (usually 0.01–0.1), Clear Coat Bottom Normal (separate normal for the base layer — e.g., brushed metal direction under paint).
附加输入:Clear Coat(强度 0–1)、Clear Coat Roughness(通常 0.01–0.1)、Clear Coat Bottom Normal(基础层单独法线——例如油漆下的拉丝金属方向)。
Two-Sided Foliage — Transmission Through Thin LeavesTwo-Sided Foliage — 薄叶片透射
Designed for thin geometry like leaves and flower petals. It adds a transmission term to the back face: when lit from behind, light "bleeds through" the leaf tinted by the Subsurface Color (typically a bright green/yellow). The transmission is a function of the back-face NoL — maximum when the light is directly behind the surface.
专为叶片和花瓣等薄几何体设计。它在背面添加透射项: 从背面照射时,光线以 Subsurface Color(通常是明亮的绿/黄色)着色"透过"叶片。 透射是背面 NoL 的函数——当光线直接在表面后方时最大。
Key inputs: Subsurface Color = transmission tint (bright green for leaves). Opacity controls alpha masking. Unlike real SSS, there is no screen-space blur — the transmission is purely per-pixel in the lighting shader.
关键输入:Subsurface Color = 透射色调(叶片用明亮绿色)。Opacity 控制 Alpha 遮罩。与真实 SSS 不同,没有屏幕空间模糊——透射完全在光照 Shader 中逐像素计算。
Hair — Marschner Multi-Lobe Fiber BRDFHair — Marschner 多叶瓣纤维 BRDF
Hair fibers are cylindrical, not flat — so a planar BRDF is fundamentally wrong for them. UE5 uses the Marschner model, which treats each strand as a transparent cylinder and computes three separate scattering lobes based on how light interacts with the fiber geometry.
头发纤维是圆柱形的,而不是平面的——因此平面 BRDF 对它们从根本上就是错误的。 UE5 使用 Marschner 模型,将每根发丝视为透明圆柱体, 并根据光线与纤维几何体的交互方式计算三个独立的散射叶瓣。
// HairBxDF (ShadingModels.ush) — conceptual structure float3 HairBxDF(FGBufferData G, float3 L, float3 V, float3 T /*fiber tangent*/) { // Strand tangent is stored in GBuffer instead of normal float SinThetaL = dot(T, L); // longitudinal angle float SinThetaV = dot(T, V); // Longitudinal scattering (Gaussian, parametric β_M) float Beta_M = G.Roughness; // longitudinal roughness float Beta_N = G.CustomData.x; // azimuthal roughness // Compute per-lobe weights from pigmentation float3 Absorption = G.BaseColor; // melanin absorption float3 R_lobe = Hair_R(Beta_M, SinThetaL, SinThetaV, ...); float3 TT_lobe = Hair_TT(Beta_M, Beta_N, Absorption, ...); float3 TRT_lobe = Hair_TRT(Beta_M, Beta_N, Absorption, ...); return R_lobe + TT_lobe + TRT_lobe; }
Key inputs: Base Color = melanin pigment (blonde = light yellow, black = near black). Roughness = longitudinal roughness (how broad the highlight is along the fiber). Scatter (CustomData) = how translucent the fiber is. Note: the normal input is ignored — the model uses the tangent (fiber direction) instead.
关键输入:Base Color = 黑色素色素(金发 = 浅黄色,黑发 = 接近黑色)。Roughness = 纵向粗糙度(高光沿纤维的宽度)。Scatter(CustomData)= 纤维的半透明程度。注意:法线输入被忽略——模型使用切线(纤维方向)代替。
Cloth — Ashikhmin Retro-Reflective VelvetCloth — Ashikhmin 逆反射绒布
Cloth fibers create a unique appearance: strong retro-reflection (light bounces back toward the source) and a characteristic limb brightening at grazing angles (velvet sheen). The Cloth model replaces the GGX specular with the Ashikhmin-Shirley velvet distribution and adds a FuzzColor for the sheen tint.
布料纤维产生独特外观:强烈的逆反射(光线反弹回光源方向)和 在掠射角处特有的边缘增亮(绒面光泽)。 Cloth 模型将 GGX 镜面替换为 Ashikhmin-Shirley 绒布分布, 并添加 FuzzColor 用于光泽色调。
// Cloth velvet distribution (Ashikhmin 2000) // Peaks at grazing angles, back-scatters toward light source float D_Cloth(float Roughness, float NoH) { float CosH2 = NoH * NoH; float SinH2 = 1 - CosH2; float α2 = Roughness * Roughness; return (1 + 4 * exp(-SinH2 / (CosH2 * α2))) / (PI * (1 + 4 * α2)); } // Cloth BRDF = D_Cloth(velvet) + modified diffuse with FuzzColor // FuzzColor stored in GBuffer.CustomData.rgb // SubsurfaceColor = underlying cloth color (contributes to diffuse)
Key inputs: Base Color = underlying woven fabric color. FuzzColor = the sheen tint (often lighter/desaturated version of Base Color). Roughness = how broad the sheen is. Do not use high Metallic — cloth is always dielectric.
关键输入:Base Color = 底层织物颜色。FuzzColor = 光泽色调(通常是 Base Color 的更亮/更不饱和版本)。Roughness = 光泽的宽度。不要使用高 Metallic——布料始终是电介质。
Eye — Cornea Refraction & IrisEye — 角膜折射与虹膜
The Eye shading model accurately simulates the layered structure of the human eye: a smooth cornea (IOR ≈ 1.376) that refracts the view ray into the iris plane, parallax from the iris depth, and the sclera (white of the eye) with subsurface scattering. The cornea produces a wet, glassy highlight.
Eye 着色模型精确模拟人眼的分层结构:光滑的角膜(IOR ≈ 1.376) 将视线光线折射到虹膜平面、来自虹膜深度的视差,以及具有次表面散射的巩膜(眼白)。 角膜产生湿润的玻璃质高光。
Key inputs: Iris Mask separates iris from sclera. Iris Distance controls parallax depth. Cornea Roughness = 0 for fresh eyes, 0.1+ for dry/stylized. The iris texture should be authored from a top-down projection. Sclera uses Subsurface Profile for veins and blood-shot effects.
关键输入:Iris Mask 将虹膜与巩膜分开。Iris Distance 控制视差深度。Cornea Roughness = 0 用于清澈眼睛,0.1+ 用于干燥/风格化眼睛。虹膜纹理应从俯视投影创作。巩膜使用 Subsurface Profile 实现血管和充血效果。
Single Layer Water — Absorption & RefractionSingle Layer Water — 水体吸收与折射
A dedicated shading model for real-time water surfaces. It handles four phenomena that regular materials cannot: depth-based absorption (water gets darker/more colored the deeper you look), refraction (distortion of what's underwater), surface scattering (Mie/Rayleigh scattering of volumetric water color), and integration with SSR/Lumen reflections.
用于实时水面的专用着色模型。它处理普通材质无法处理的四种现象: 基于深度的吸收(越深水看起来越暗/颜色越深)、 折射(水下内容的扭曲)、表面散射(体积水色的 Mie/Rayleigh 散射), 以及与 SSR/Lumen 反射的集成。
// Key water material parameters (SingleLayerWaterShading.ush) // These are special material inputs only visible in SingleLayerWater shading model: float3 WaterScatterColor; // color of scattered light in water body float3 WaterAbsorptionColor; // what color gets absorbed (complement of visible color) float WaterPhaseG; // Henyey-Greenstein phase g [-1..1], 0=isotropic float WaterColorAbsorptionDepth;// depth in cm at which absorption kicks in float WaterShoreline; // [0,1] mask for shoreline foam blending // Water depth computed from scene depth buffer: // float WaterDepth = (PixelWorldPos.z - BedWorldPos.z); // float3 Transmittance = exp(-WaterAbsorptionColor * WaterDepth / 100.0);
See Water Rendering for the complete material setup and rendering pipeline detail.
完整材质设置和渲染管线详情请参见水体渲染。
Thin Translucent — Thin Glass & FabricThin Translucent — 薄玻璃与织物
Standard translucency in UE5 accumulates volume along the view ray — wrong for flat, thin surfaces like
window glass. Thin Translucent treats the surface as infinitely thin: it produces a sharp specular
on the front face and transmits the correct proportion of light through, tinted by
Transmission Color. The transmission fraction = 1 - (specular + diffuse).
UE5 的标准半透明沿视线光线积累体积——对于窗玻璃等平坦薄表面来说是错误的。
Thin Translucent 将表面视为无限薄:它在正面产生清晰的镜面反射,
并以 Transmission Color 着色传输正确比例的光线。
透射比例 = 1 - (镜面 + 漫射)。
When to use: Window glass, thin plastic sheets, stained glass, colored cellophane. NOT for volumetric translucent objects — use regular Translucent + Subsurface for those.
适用场景:窗玻璃、薄塑料片、彩色玻璃、有色玻璃纸。不适用于体积半透明对象——对于那些请使用常规半透明 + 次表面。
Substrate — Layered BSDF System (UE 5.3+)Substrate — 分层 BSDF 系统(UE 5.3+)
Substrate (formerly Strata) is the next generation material system in UE5.
Instead of choosing a single fixed shading model, Substrate lets you layer any combination of
BSDFs using operators. Each BSDF slab is independently parameterized; slabs can be
blended with over, add, or weight operators.
Substrate(原名 Strata)是 UE5 的下一代材质系统。
不是选择单一固定着色模型,Substrate 允许你使用运算符以任意组合分层 BSDF。
每个 BSDF Slab 独立参数化;Slab 可以用 over、add
或 weight 运算符混合。
// Substrate material example: car paint with flakes // Material Editor: chain of Substrate nodes SubstrateSlabBSDF( DiffuseColor = BaseColor, Roughness = 0.3, F0 = 0.04, // plastic Normal = BumpNormal ) // "over" operator: coat layer on top of base StrataLayering( Top = SubstrateSlabBSDF(Roughness=0.05, ...), // clear coat Base = AboveSlabBSDF, Thickness = CoatThicknessMap ) // Available BSDF node types in Substrate: // SubstrateSlabBSDF — standard PBR slab (replaces Default Lit) // SubstrateHairBSDF — Marschner for fibers // SubstrateEyeBSDF — eye cornea/iris model // SubstrateVolumetricFogCloudBSDF — volumetric effects // SubstrateUnlit — emission only // SubstrateCoatLayering — clear coat with proper energy transfer
Enable Substrate in Project Settings → Rendering → Substrate. Note: Substrate is still evolving and has hardware-specific fallback paths. On hardware that supports 128+ byte GBuffers, full BSDF layering is preserved; older hardware uses a simplified "legacy" conversion.
在"项目设置 → 渲染 → Substrate"中启用 Substrate。注意:Substrate 仍在演进中,并有特定于硬件的回退路径。在支持 128+ 字节 GBuffer 的硬件上,完整的 BSDF 分层被保留;较旧硬件使用简化的"传统"转换。
Quick Comparison Table快速对比表
| Model模型 | Best For最适合 | GPU CostGPU 开销 | Extra Passes?额外通道? |
|---|---|---|---|
| Unlit | Particles, holograms, emissive粒子、全息、自发光 | Zero (skip lighting)零(跳过光照) | None无 |
| Default Lit | Everything else (90% of assets)其他所有(90% 资产) | Baseline基准 | None无 |
| Subsurface | Stylized skin, wax, candles风格化皮肤、蜡、蜡烛 | +10%+10% | None无 |
| PreIntegrated Skin | Background characters背景角色 | +5% (+LUT)+5%(+LUT) | None无 |
| Subsurface Profile | Hero skin, marble英雄皮肤、大理石 | High (+blur pass)高(+模糊通道) | 2× blur passes2× 模糊通道 |
| Clear Coat | Car paint, lacquer, phones汽车油漆、清漆、手机 | +20% (2× specular)+20%(2× 镜面) | None无 |
| Two-Sided Foliage | Leaves, petals叶片、花瓣 | +5%+5% | None无 |
| Hair | Strand-based hair发丝毛发 | High (3 lobes)高(3 叶瓣) | Deep shadow maps深度阴影贴图 |
| Cloth | Velvet, microfiber天鹅绒、超细纤维 | +15%+15% | None无 |
| Eye | Character eyes角色眼睛 | High (refraction)高(折射) | None无 |
| Single Layer Water | Water surfaces水面 | Very High非常高 | Depth + refraction passes深度+折射通道 |
| Thin Translucent | Window glass, film窗玻璃、薄膜 | +10%+10% | None无 |
| Substrate | Complex layered materials复杂分层材质 | Variable (config-dependent)可变(取决于配置) | Depends on layers取决于层数 |
Source Navigation源码导航
All shader paths relative to Engine/Shaders/Private/
所有 Shader 路径相对于 Engine/Shaders/Private/
- ShadingModels.ushCore: all BRDF functions. Switch on ShadingModelID dispatches here.核心:所有 BRDF 函数。ShadingModelID 的分发在此处进行。
- ShadingCommon.ushMSM_* enum values, GBuffer packing helpers per modelMSM_* 枚举值,每个模型的 GBuffer 打包辅助函数
- DeferredLightingCommon.ushMain deferred lighting loop — reads GBuffer, calls BRDF functions主延迟光照循环——读取 GBuffer,调用 BRDF 函数
- ClearCoatCommon.ushClear coat two-layer evaluation清漆双层计算
- HairBsdf.ushMarschner R/TT/TRT lobe implementationsMarschner R/TT/TRT 叶瓣实现
- ClothBsdf.ushAshikhmin velvet distributionAshikhmin 绒布分布
- EyeCommon.ushCornea refraction, iris parallax角膜折射、虹膜视差
- SingleLayerWaterShading.ushWater depth absorption, Henyey-Greenstein scattering水体深度吸收、Henyey-Greenstein 散射
- PostProcessSubsurface.usfSubsurface Profile screen-space blur (horizontal + vertical passes)Subsurface Profile 屏幕空间模糊(水平 + 垂直通道)
- Substrate/Substrate.ushSubstrate BSDF layer evaluation, slab parametersSubstrate BSDF 层计算,Slab 参数
- ../../Runtime/Renderer/Private/Substrate/Substrate.cppSubstrate C++ runtime: GBuffer layout, fallback conversionSubstrate C++ 运行时:GBuffer 布局、回退转换