浏览代码

HDRenderPipeline: Upgrade code to use new builtin sampler feature

/fptl_cleanup
sebastienlagarde 7 年前
当前提交
cee0e59f
共有 3 个文件被更改,包括 109 次插入15 次删除
  1. 17
      Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.hlsl
  2. 105
      Assets/TestScenes/HDTest/HDRenderLoopTest.unity
  3. 2
      ProjectSettings/ProjectVersion.txt

17
Assets/ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.hlsl


// Reference Lambert diffuse / GGX Specular for IBL and area lights
#ifdef HAS_LIGHTLOOP // Both reference define below need to be define only if LightLoop is present, else we get a compile error
// #define LIT_DISPLAY_REFERENCE_AREA
// #define LIT_DISPLAY_REFERENCE_IBL
//#define LIT_DISPLAY_REFERENCE_AREA
//#define LIT_DISPLAY_REFERENCE_IBL
#endif
// Use Lambert diffuse instead of Disney diffuse
// #define LIT_DIFFUSE_LAMBERT_BRDF

// TODO: Check if anisotropy with a dynamic if on anisotropy > 0 is performant. Because it may mean we always calculate both isotropy and anisotropy case.
// Maybe we should always calculate anisotropy in case of standard ? Don't think the compile can optimize correctly.
SamplerState ltc_linear_clamp_sampler;
// TODO: we can share the sampler here and name it SRL_BilinearSampler. However Unity currently doesn't support to set sampler in C#
// + to avoid the message Fragment program 'Frag' : sampler 'sampler_PreIntegratedFGD' has no matching texture and will be undefined.
SAMPLER2D(sampler_PreIntegratedFGD);
SAMPLER2D(sampler_LtcData);
#define LTC_GGX_MATRIX_INDEX 0 // RGBA
#define LTC_DISNEY_DIFFUSE_MATRIX_INDEX 1 // RGBA
#define LTC_MULTI_GGX_FRESNEL_DISNEY_DIFFUSE_INDEX 2 // RGB, A unused

// _PreIntegratedFGD.y = Gv * Fc
// Pre integrate DisneyDiffuse FGD:
// _PreIntegratedFGD.z = DisneyDiffuse
float3 preFGD = SAMPLE_TEXTURE2D_LOD(_PreIntegratedFGD, sampler_PreIntegratedFGD, float2(NdotV, perceptualRoughness), 0).xyz;
float3 preFGD = SAMPLE_TEXTURE2D_LOD(_PreIntegratedFGD, ltc_linear_clamp_sampler, float2(NdotV, perceptualRoughness), 0).xyz;
// f0 * Gv * (1 - Fc) + Gv * Fc
specularFGD = fresnel0 * preFGD.x + preFGD.y;

// Note we load the matrix transpose (avoid to have to transpose it in shader)
preLightData.ltcXformGGX = 0.0;
preLightData.ltcXformGGX._m22 = 1.0;
preLightData.ltcXformGGX._m00_m02_m11_m20 = SAMPLE_TEXTURE2D_ARRAY_LOD(_LtcData, sampler_LtcData, uv, LTC_GGX_MATRIX_INDEX, 0);
preLightData.ltcXformGGX._m00_m02_m11_m20 = SAMPLE_TEXTURE2D_ARRAY_LOD(_LtcData, ltc_linear_clamp_sampler, uv, LTC_GGX_MATRIX_INDEX, 0);
preLightData.ltcXformDisneyDiffuse._m00_m02_m11_m20 = SAMPLE_TEXTURE2D_ARRAY_LOD(_LtcData, sampler_LtcData, uv, LTC_DISNEY_DIFFUSE_MATRIX_INDEX, 0);
preLightData.ltcXformDisneyDiffuse._m00_m02_m11_m20 = SAMPLE_TEXTURE2D_ARRAY_LOD(_LtcData, ltc_linear_clamp_sampler, uv, LTC_DISNEY_DIFFUSE_MATRIX_INDEX, 0);
float3 ltcMagnitude = SAMPLE_TEXTURE2D_ARRAY_LOD(_LtcData, sampler_LtcData, uv, LTC_MULTI_GGX_FRESNEL_DISNEY_DIFFUSE_INDEX, 0).rgb;
float3 ltcMagnitude = SAMPLE_TEXTURE2D_ARRAY_LOD(_LtcData, ltc_linear_clamp_sampler, uv, LTC_MULTI_GGX_FRESNEL_DISNEY_DIFFUSE_INDEX, 0).rgb;
preLightData.ltcGGXFresnelMagnitudeDiff = ltcMagnitude.r;
preLightData.ltcGGXFresnelMagnitude = ltcMagnitude.g;
preLightData.ltcDisneyDiffuseMagnitude = ltcMagnitude.b;

105
Assets/TestScenes/HDTest/HDRenderLoopTest.unity


--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
serializedVersion: 11
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2

m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 8
serializedVersion: 9
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024

m_MixedBakeMode: 1
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFiltering: 0

m_PVRFilteringAtrousPositionSigma: 1
m_LightingDataAsset: {fileID: 112000002, guid: 94f8793cc1c3e0248901e8f336236333,
type: 2}
m_ShadowMaskMode: 2
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 2

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 1

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

m_Component:
- component: {fileID: 1634702262}
m_Layer: 0
m_Name: Test - Parallax occlusion mapping - Triplanar (1)
m_Name: Test - Parallax occlusion mapping - Triplanar
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 1

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

shadowResolution: 512
m_innerSpotPercent: 0
shadowDimmer: 1
lightDimmer: 1
fadeDistance: 10000
shadowFadeDistance: 10000
affectDiffuse: 1
affectSpecular: 1
archetype: 0

2
ProjectSettings/ProjectVersion.txt


m_EditorVersion: 2017.1.0a2
m_EditorVersion: 2017.1.0a3
正在加载...
取消
保存