Geometry
Geometry basics
Nodes
Input elements used in Emeshe:
EmesheGeomFeatures node
Standards:
Allows to define Features Easily
POSITION
NORMAL
TEXCOORD0
BLENDINDICES
BLENDWEIGHTS
TANGENT
BINORMAL
Emeshe
.xyz: Previous Position
.w: "Instance" ID
COLOR0
*(not used for any kind of color)
have to be rewritten
haven't tested current implementation but it should work
Deferred render engine:
Forward
Materials
CPU Space
GPU Space
DeferredBase
Basics
Using VObjects for management
you don't necessarily have to know about it though
MaterialBuffer node collects data from MaterialManagers and converts them into 3 Buffers:
Most processing done in Screen Space
Base module to draw the scene
it has a PN-Triangle tessellation variant
MaterialDictionary
MF_MATERIALMETA
MaterialData
MM
MaterialManager
Additional Features
FeatureOffset
Geometry Features
MF_MATERIALDATA
Managed by #define's under the hood
4xfloat16 (rgb used only)
MF_FEATUREOFFSET
Managed by #define's under the hood
Individual bits indicate whether a feature is known or not
MaterialMeta
{
uint Flags;
uint Address;
uint Size;
}
From SV_InstanceID
or from COLOR0.w
Where the material starts in the MaterialData buffer
FM
...
FeatureManager
FM
...
Tangents
Binormals
Total size of material in number of floats
float[X] GetFloat[X](uint MatID, uint2 Feature, uint ParamOffset)
From COLOR0.xyz
+ ID from COLOR0.w
4xfloat16 (rgb used only)
}
Decrease performance!
Currently known features:
MF_LIGHTING_AMBIENT
MF_LIGHTING_PHONG
MF_LIGHTING_PHONG_SPECULARMAP
MF_LIGHTING_COOKTORRANCE
MF_LIGHTING_COOKTORRANCE_SPECULARMAP
MF_LIGHTING_COMPOSITE
MF_LIGHTING_COMPOSITE_MAP
MF_LIGHTING_FAKESSS
MF_LIGHTING_FAKESSS_MAP
MF_LIGHTING_FAKERIMLIGHT
MF_LIGHTING_FAKERIMLIGHT_MAP
MF_LIGHTING_MATCAP
MF_LIGHTING_MATCAP_BLENDMAP
MF_LIGHTING_EMISSION
MF_LIGHTING_EMISSION_MAP
MF_LIGHTING_SHADOWS
MF_GI_SSAO
MF_GI_CSSGI
MF_GI_SSSSS
MF_GI_SSSSS_MAP
MF_REFLECTION_SPHEREMAP
MF_REFLECTION_SSLR
MF_REFLECTION_MAP
MF_REFRACTION_SPHEREMAP
MF_REFRACTION_SSLR
MF_REFRACTION_MAP
MF_CALCULATENORMALS
2xfloat16
Joins the flags from features
Prop Layer
Instancing
Usually for Shadow maps
Materials are referenced by their ID
4xuint32:
RG: UV coords (from float)
B: Material ID
A: Object ID
2 ways:
Resource hog :(
MRE
Lighting
It is the central node
Current models are:
There are plans to implement
Ashikhmin-Shirley
Lookup Table method
Roughness map:
Selected by material from a Texture Array
(material should know Specular Map feature of Cook-Torrance)
for anisotropic model
it will be thrown out though, possibly avoid it
GPU Space
CPU Space
Also calculates
Buffers
Shadows
4xfloat16 (rgb used only)
noisy to dampen banding
Percentage Closer Soft Shadows
Importance shadow management is patchable
MRE_VIEWPOS
MRE_DEPTH
MRE_STENCIL
D24_UNorm_S8_Uint
Components
Textures per component:
Spot
Sun
Point
so you can composite them separately
referenced from a texture array by Texture ID
if multiple light use the same shadowmap
Shadowmaps are generated from cube texture renderer
subject to change!
expensive though because the scene have to be rendered 6 times per light
Compositing
Color Bleeding
Emission
Ambient Occlusion
Reflection/Refraction
based on CSSGI by ArKano22 on gamedev.net
Low frequency:
implementation by UNC
}
used together makes a nice crispy look
Light Compositing
High frequency:
SSLAO.tfx
ColorBleedingInDiffuse
makes it easy to have it in the diffuse light component
makes it easy to have it in the diffuse light component
Depth of Field
Plans
Motion Blur
Tonemapping
based on LensBlur TextureFX in DX9
Methods:
Auto Exposure
Can be regional (HDR image effect)
0.8 blur is the default and recommended
This is the best!
RGB: amount per channel
A: roughness
RGB: amount per channel
A: roughness