82 lines
1.5 KiB
HLSL
82 lines
1.5 KiB
HLSL
#ifndef SLOAD_H
|
|
#define SLOAD_H
|
|
#include "common.hlsli"
|
|
|
|
static const float fParallaxStartFade = 8.0f;
|
|
static const float fParallaxStopFade = 12.0f;
|
|
|
|
uniform sampler s_detailBumpX;
|
|
uniform sampler s_detailBump;
|
|
|
|
uniform sampler s_bumpX;
|
|
uniform sampler s_bump;
|
|
|
|
struct XrayMaterial
|
|
{
|
|
float Metalness;
|
|
float Roughness;
|
|
|
|
float3 Normal;
|
|
float3 Point;
|
|
|
|
float4 Color;
|
|
float Hemi;
|
|
float Sun;
|
|
|
|
float SSS;
|
|
float AO;
|
|
};
|
|
|
|
void SloadNew(inout p_bumped_new I, inout XrayMaterial M)
|
|
{
|
|
M.Color = tex2D(s_base, I.tcdh.xy);
|
|
|
|
#ifdef USE_BUMP
|
|
float4 Bump = tex2D(s_bump, I.tcdh.xy);
|
|
float4 BumpX = tex2D(s_bumpX, I.tcdh.xy);
|
|
|
|
// #ifndef USE_PBR
|
|
M.Normal = Bump.wzy + BumpX.xyz - 1.0f;
|
|
M.Normal.z *= 0.5f;
|
|
|
|
M.Roughness = Bump.x * Bump.x;
|
|
M.Metalness = 0.0f;
|
|
|
|
M.SSS = 0.0;
|
|
M.AO = 1.0;
|
|
// #endif
|
|
#else
|
|
M.Normal = float3(0.0f, 0.0f, 1.0f);
|
|
|
|
M.Roughness = 0.04f;
|
|
M.Metalness = 0.0f;
|
|
|
|
M.SSS = 0.0f;
|
|
M.AO = 1.0f;
|
|
#endif
|
|
|
|
#ifdef USE_TDETAIL
|
|
float2 tcdbump = I.tcdh.xy * dt_params.xy;
|
|
float4 Detail = tex2D(s_detail, tcdbump);
|
|
#ifndef USE_PBR
|
|
M.Color.xyz *= Detail.xyz * 2.0f;
|
|
|
|
#ifdef USE_TDETAIL_BUMP
|
|
float4 DetailBump = tex2D(s_detailBump, tcdbump);
|
|
float4 DetailBumpX = tex2D(s_detailBumpX, tcdbump);
|
|
M.Normal += DetailBump.wzy + DetailBumpX.xyz - 1.0f;
|
|
M.Roughness *= DetailBump.x * 2.0f;
|
|
#else
|
|
M.Roughness *= Detail.w * 2.0f;
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef USE_PBR
|
|
M.Metalness = M.Roughness * 0.1f;
|
|
M.Roughness = saturate(1.0f - M.Roughness);
|
|
#endif
|
|
}
|
|
|
|
#endif
|
|
|