DPT Games VCCORE Material System

To provide the highest possible performance and compatibility with modern Unity rendering features (like the GPU Resident Drawer and SRP Batcher), all DPT asset packages share a single, unified Master Shader Graph and Material.

The One Material Philosophy

Instead of cluttering your project with dozens of unique materials that break batching and increase draw calls, our assets are designed to share one material. The inspector dynamically adapts to show only the properties relevant to the workflow you are currently using.

Important: Runtime cost is determined only by the features actively enabled on the material. If a feature is not used by an asset (e.g., no valid data is supplied), the shader bypasses that feature path entirely, resulting in no runtime GPU cost from that system.

Mixing Packages & Best Practices

If you are using multiple DPT packages within the same scene (e.g., combining Harvestable Nature with Interactive Props), you will maximize your performance by assigning the exact same Material asset to all of them.

Important Setup Rule for Mixed Projects:

We highly recommend sharing a single instance of the M_DPT_VCCORE Master Material across all assets to maximize performance and batching efficiency.

Because the shader uses dynamic branching and keyword compilation, standard assets that do not use advanced features (like Normal Map arrays or procedural details) will safely bypass those systems with minimal additional runtime cost, even if they share the material with interactive or complex assets that do use them.

Dynamic Interface Features

To further reduce clutter, the VCCORE interface is context-aware:

Vertex Colors Gates More Than Just Textures:

Use Vertex Colors doesn't just hide the standard texture slots — it also fully hides the Emission System, Wind System, and Procedural Details sections when disabled. These systems rely on the vertex-color-driven pipeline, so if you're working with a standard texture-based workflow, none of these sections will appear in the Inspector, regardless of which packages you own. Re-enable Use Vertex Colors to access them. Stylized Lighting and the Metallic/Non-Metallic Tint controls are not affected by this and remain available either way.

Ecosystem Detection & Adaptive UI

To ensure a completely seamless setup experience across our modular catalog, the Master Material Inspector features an automated Ecosystem Detection System. Instead of overwhelming your workspace with settings for packages you do not own, the layout dynamically matches your active project files.

How It Works

Each DPT package contains an explicit signature file. When a package is loaded or imported, the editor performs a lightweight project scan once to update your layout capabilities dynamically:

No Manual Setup:

This discovery scan executes natively inside Unity during compilation passes. There are no manual serial keys, activation panels, custom preprocessor directives, or complex scripting configuration arrays to manage.

Procedural Details

When the Use Procedural Details toggle is enabled, the Inspector reveals controls for dynamically generating micro-surface details based on the vertex data of the mesh. Rather than relying on unique, memory-heavy textures, these details are calculated mathematically on the GPU.

While the exact features available (such as Rock, Leather, or Bark) depend on the DPT packages present in your project, the adjustment sliders share a universal behavior across all types:

Procedural Detail Array

To ensure maximum compatibility with the SRP Batcher and GPU Resident Drawer, all procedural surface details (such as Bark, Leather, Rock, and Metallic imperfections) are packed into a single, highly optimized Texture2D Array.

This universal array is shared across all DPT packages. The Master Shader dynamically selects the correct texture slice per-mesh via the vertex color alpha channel, meaning no material changes or additional draw calls are ever required.

Mobile & Low-Memory Projects:

While the default detail array is highly optimized at 512x512, a 256x256 variant is also included in the Core folder for strict mobile or VR memory budgets. You can swap this out directly in the Material Inspector under the Procedural Details texture slot.
Wood Grain Value Map:

In addition to the normal array, the system uses a single, dedicated packed texture to handle the base color value adjustments for the Procedural Wood Grain. This operates automatically alongside the detail array when Wood features are active.

Stylized Lighting & Shadow Shaping

The VCCORE shader includes an optional Stylized Lighting mode, which replaces the default smooth PBR falloff with an art-directable light/shadow split, plus independent control over shadow color and darkness. When Stylized Lighting is disabled, the material behaves exactly as standard PBR — the system is fully bypassed with no runtime cost.

Shadow Terminator & Light Terminator (Range: 0.0 – 1.0)

These two properties define where, across the surface, the transition from lit to shadowed occurs:

Widening the gap between the two terminators softens and broadens the transition, spreading it out toward a smooth, natural gradient similar to standard Lambertian shading. Narrowing the gap tightens and hardens the transition, up to a fully solid, hard-edged shadow line when they overlap.

Default Values:

Out of the box, Shadow Terminator is set to 0.3 and Light Terminator to 0.5 — a fairly narrow band that produces a crisp, contrasty stylized shadow line rather than a soft gradient. Shadow Tint defaults to black and Shadow Strength defaults to 1.0, so enabling Stylized Lighting will produce a visible effect immediately without needing to adjust any other settings first.
Terminators Cannot Cross:

Shadow Terminator and Light Terminator are clamped so that one can never pass the other. Dragging one past the other's position will instead drag the second value along with it, preserving their relative order at all times.

Under the hood, the terminator transition is driven by a half-lambert value — the surface normal's dot product with the light direction, remapped from its native -1…1 range into 0…1. A value of 0 corresponds to surfaces facing directly away from the light, while 1 corresponds to surfaces facing directly toward it. Shadow Terminator and Light Terminator act as the lower and upper thresholds against this value, which is why spreading them toward 0 and 1 produces a full-range, gradual falloff across the whole surface, while narrowing the range hardens the transition into a sharper line.

Light Normal Smoothness (Range: 0.0 – 1.0)

When lighting low-poly meshes with detailed normal maps, sharp lighting terminators can sometimes cause pixelated or jagged shadow edges along polygon boundaries. The Light Normal Smoothness slider allows you to smoothly blend between your detailed normal map and the mesh's clean vertex normals specifically for lighting dot-product calculations.

This eliminates jagged shadow terminators on low-poly geometry while preserving 100% of your normal map's texture bump details in specular reflections and direct light highlights!

Shadow Strength (Range: 0.0 – 1.0)

Controls how strongly the shadowed region is darkened and tinted:

Shadow Strength Gates the Terminators:

Because Shadow Strength controls the overall visibility of the shadow effect, leaving it at 0.0 will make Shadow Terminator and Light Terminator appear to have no effect — the shadow shape is still being calculated, but it resolves to white either way. Increase Shadow Strength above 0 to see the terminator shaping take effect.

Shadow Tint

Sets the color applied to the shadowed side of the surface. This color is blended in according to Shadow Strength, then multiplied against Base Color before final output — allowing for cool/warm shadow color grading (e.g. blue-tinted shadows on a warm-lit object) without any additional lights or post-processing.

Shadow Rim Lighting (Bounce & Edge Glow)

The VCCORE shader includes an integrated ambient shadow bounce and rim lighting system evaluated directly in Emission. This allows models to display vibrant, cool-toned outlines or atmospheric backlighting on their shadowed sides without being crushed or darkened by direct light attenuation.

Surface-Modulated Highlights & Cavity Masking:

The rim lighting system dynamically responds to surface properties. Polished metallic surfaces automatically sharpen their rim outline into crisp highlights, while matte surfaces produce soft ambient bounce shading. Furthermore, the system incorporates dual-threshold AO masking ("Cavity Killer") to ensure hollow interiors (such as sockets or pipe bores) stay pitch-black without chopping up exterior silhouette outlines.

Real-Time Cast Shadow Controls (Cast Shadow Min / Max)

In addition to self-shading terminators, VCCORE provides independent threshold and softness controls for real-time cast shadows (such as tree leaves or character shadows falling onto your props in URP):

Widening the range between Min and Max softens incoming cast shadow edges, while narrowing the range creates crisp, razor-sharp cel-shaded cast shadows that match your self-shading terminators. The system includes built-in safety clamping to prevent shadow map bias flickering at high slider values.

Scene Shadow Helpers (URP Only)

Because Shadow Terminator, Light Terminator, Shadow Tint, and Shadow Strength are all self-shading effects baked into this material, they're entirely separate from Unity's own real-time cast shadows and scene color grading. You may wish to adjust your shadow settings in your URP asset and volume profile to match the shadow settings of the objects.

Emission System

The VCCORE shader includes a highly optimized emission system. When Enable Emission is toggled on in the inspector, you can control the glow intensity and color for any designated emissive areas on the mesh.

Requires the Emission Package Signature:

Like Procedural Details, the Emission System is part of the Ecosystem Detection System — the entire section is hidden from the Inspector unless you own a DPT package that includes the Emission signature file. It also requires Use Vertex Colors to be enabled, as it does not appear in texture-based workflows.

Global vs. Per-Instance Emission

The emission system is designed to work seamlessly with the One Material Philosophy, allowing for both global and per-object control:

Metallic Emissive Color

The Emission workflow features a dedicated Metallic Emissive Color property alongside the standard Base Emissive Color. You can now independently customize and drive emissive glow hues on metallic hardware (such as iron runes, copper pipes, or steel vents) entirely separately from non-metallic base materials on the same mesh!

The Metallic Object Exception:

Due to how the shader processes specular reflection data, metallic objects cannot have their emission color changed per-instance via the script. Instead, metallic emission is controlled globally by the dedicated Metallic Emissive Color property in the Material Inspector. However, you can still use the DPT_ShaderVariation script (via the Alpha channel) to control the emission strength of these metallic objects on a per-instance basis.
The "White Base" Strategy for Perfect Tinting:

If you want to use the DPT_ShaderVariation script to dynamically change the glow color of different objects (e.g., a red potion and a blue potion using the exact same material), set the master Emissive Color in the Material Inspector to pure White. Because the script uses mathematical multiplication, a white base allows the script's color to dictate 100% of the final glow hue. Note: this only applies to non-metallic surfaces — see the Metallic Object Exception above, as metallic emission hue cannot be changed per-instance regardless of the base color setting.
Advanced Setup: Independent Body & Glow Colors

Because the DPT_ShaderVariation script passes a single color per MeshRenderer, the object's body tint and emissive glow will share the same hue. If you need an object to have contrasting colors (e.g., a dark blue sword with bright orange glowing runes), the industry-standard best practice is to separate the glowing runes into a floating decal child mesh. This allows you to apply one variation script to the sword body, and a separate variation script to the rune mesh, keeping both perfectly batched under the same master material.

Color Variation

Per-instance color and brightness variation is handled by the DPT_ShaderVariation component, which writes variation data directly to Unity's GPU instancing buffer without duplicating or modifying the shared material.

One Material To Rule Them All:

Because variation data is pushed directly to the GPU instance buffer, your shared material is never cloned, duplicated, or modified — regardless of how many objects carry unique color values. Your batching and GPU Resident Drawer compatibility remain completely intact.

Metallic & Non-Metallic Tint Control

The Master Material includes separate toggles and intensity sliders for metallic and non-metallic surface regions, giving precise control over how instanced color tinting from DPT_ShaderVariation is applied across different material types on the same mesh.

Optimized Keyword Architecture:

To ensure maximum runtime performance and minimal shader memory overhead, redundant shader compilation keywords for Metallic and Non-Metallic Tinting have been stripped from the pipeline. The tint gates now execute via high-speed dynamic branching, resulting in faster project build times and fewer shader variants without losing any tinting capability!

Tint Strength Sliders (Range: -2.0 to 1.0)

Both sliders share the same asymmetric range, allowing control beyond simple tint blending in either direction:

Full technical documentation for the DPT_ShaderVariation component, including brightness range settings and the HDR tinting system, can be found in the Shader Variation guide.

Support & Custom Pipeline Integration

If your project requires external or custom 3D models to be fully integrated into the DPT ecosystem—including custom vertex-data packing, procedural wood grain mapping, normal array configuration, advanced GPU wind system implementation, or any other bespoke features—freelance technical art services are available. Additionally, availability extends to general 3D asset production, high-to-low poly hard surface modeling, stylized prop creation, and game-ready LOD budgeting built to align cleanly with your specific project constraints.

Contact & Inquiries:
For freelance modeling contracts, custom asset optimization passes, standard package bug reports, and publisher licensing enquiries, please use the Contact Form on the DPT Games Hub.
DPT Support Discord:
For dedicated technical assistance, asset configuration help, and direct feedback on our Unity packages, join the Support Server.