浏览代码

draft 2

/main
Sebastien Lagarde 7 年前
当前提交
5b874b26
共有 3 个文件被更改,包括 3 次插入21 次删除
  1. 18
      ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.cs
  2. 5
      ScriptableRenderPipeline/HDRenderPipeline/ShaderConfig.cs
  3. 1
      ScriptableRenderPipeline/HDRenderPipeline/ShaderConfig.cs.hlsl

18
ScriptableRenderPipeline/HDRenderPipeline/Material/Lit/Lit.cs


public enum GBufferMaterial
{
// Note: This count doesn't include the velocity buffer. On shader and csharp side the velocity buffer will be added by the framework
Count = (ShaderConfig.k_PackgbufferInU16 == 1) ? 2 : 4
Count = 4
};
//-----------------------------------------------------------------------------

RenderTextureFormat[] m_RTFormat4 = { RenderTextureFormat.ARGB32, RenderTextureFormat.ARGB2101010, RenderTextureFormat.ARGB32, RenderTextureFormat.RGB111110Float };
RenderTextureReadWrite[] m_RTReadWrite4 = { RenderTextureReadWrite.sRGB, RenderTextureReadWrite.Linear, RenderTextureReadWrite.Linear, RenderTextureReadWrite.Linear };
// TODO: Just discovered that Unity doesn't support unsigned 16 RT format.
RenderTextureFormat[] m_RTFormat2 = { RenderTextureFormat.ARGBInt, RenderTextureFormat.ARGBInt };
RenderTextureReadWrite[] m_RTReadWrite2 = { RenderTextureReadWrite.Linear, RenderTextureReadWrite.Linear };
if (ShaderConfig.s_PackgbufferInU16 == 1)
{
RTFormat = m_RTFormat2;
RTReadWrite = m_RTReadWrite2;
}
else
{
RTFormat = m_RTFormat4;
RTReadWrite = m_RTReadWrite4;
}
RTFormat = m_RTFormat4;
RTReadWrite = m_RTReadWrite4;
}
//-----------------------------------------------------------------------------

5
ScriptableRenderPipeline/HDRenderPipeline/ShaderConfig.cs


// 3) When this is solve (i.e move previousPositionCS to a free attribute semantic), Unity only support one pSecondaryFormat. Mean if we ahve a vertex color instance stream and motion vector, motion vector will overwrite vertex color stream. See MeshRenderingData.cpp
// All this could be fix we a new Mesh API not ready yet. Note that this feature only affect animated mesh (vertex or skin) as others use depth reprojection.
VelocityInGBuffer = 0, // Change to 1 to enable the feature, then regenerate hlsl headers.
// TODO: not working yet, waiting for UINT16 RT format support
PackGBufferInU16 = 0,
CameraRelativeRendering = 1 // Rendering sets the origin of the world to the position of the primary (scene view) camera
};

// but it is usually small, so we are fine with it (until someone at microsoft fix the debuggger).
public const int k_VelocityInGbuffer = (int)ShaderOptions.VelocityInGBuffer;
public static int s_VelocityInGbuffer = (int)ShaderOptions.VelocityInGBuffer;
public const int k_PackgbufferInU16 = (int)ShaderOptions.PackGBufferInU16;
public static int s_PackgbufferInU16 = (int)ShaderOptions.PackGBufferInU16;
public const int k_CameraRelativeRendering = (int)ShaderOptions.CameraRelativeRendering;
public static int s_CameraRelativeRendering = (int)ShaderOptions.CameraRelativeRendering;

1
ScriptableRenderPipeline/HDRenderPipeline/ShaderConfig.cs.hlsl


// UnityEngine.Experimental.Rendering.HDPipeline.ShaderOptions: static fields
//
#define SHADEROPTIONS_VELOCITY_IN_GBUFFER (0)
#define SHADEROPTIONS_PACK_GBUFFER_IN_U16 (0)
#define SHADEROPTIONS_CAMERA_RELATIVE_RENDERING (1)
正在加载...
取消
保存