我们创建了 Fontainebleau 演示来说明摄影photogrammetry流程和 LayeredLit 着色器的使用。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

54 行
2.2 KiB

namespace UnityEngine.Experimental.Rendering.HDPipeline
{
public class FlowmapSkyRenderer : SkyRenderer
{
Material m_FlowmapSkyMaterial; // Renders a cubemap into a render texture (can be cube or 2D)
MaterialPropertyBlock m_PropertyBlock;
FlowmapSky m_FlowmapSkyParams;
public FlowmapSkyRenderer(FlowmapSky flowmapSkyParams)
{
m_FlowmapSkyParams = flowmapSkyParams;
m_PropertyBlock = new MaterialPropertyBlock();
}
public override void Build()
{
m_FlowmapSkyMaterial = CoreUtils.CreateEngineMaterial("Hidden/HDRenderPipeline/Sky/FlowmapSky");
}
public override void Cleanup()
{
CoreUtils.Destroy(m_FlowmapSkyMaterial);
}
public override void SetRenderTargets(BuiltinSkyParameters builtinParams)
{
if (builtinParams.depthBuffer == BuiltinSkyParameters.nullRT)
{
HDUtils.SetRenderTarget(builtinParams.commandBuffer, builtinParams.hdCamera, builtinParams.colorBuffer);
}
else
{
HDUtils.SetRenderTarget(builtinParams.commandBuffer, builtinParams.hdCamera, builtinParams.colorBuffer, builtinParams.depthBuffer);
}
}
public override void RenderSky(BuiltinSkyParameters builtinParams, bool renderForCubemap, bool renderSunDisk /* TODO Handle sun disk?*/)
{
m_FlowmapSkyMaterial.SetTexture(HDShaderIDs._Cubemap, m_FlowmapSkyParams.skyHDRI);
m_FlowmapSkyMaterial.SetFloat("_Period", m_FlowmapSkyParams.period);
m_FlowmapSkyMaterial.SetVector(HDShaderIDs._SkyParam, new Vector4(m_FlowmapSkyParams.exposure, m_FlowmapSkyParams.multiplier, m_FlowmapSkyParams.rotation, 0.0f));
// This matrix needs to be updated at the draw call frequency.
m_PropertyBlock.SetMatrix(HDShaderIDs._PixelCoordToViewDirWS, builtinParams.pixelCoordToViewDirMatrix);
CoreUtils.DrawFullScreen(builtinParams.commandBuffer, m_FlowmapSkyMaterial, m_PropertyBlock, renderForCubemap ? 0 : 1);
}
public override bool IsValid()
{
return m_FlowmapSkyParams != null && m_FlowmapSkyMaterial != null;
}
}
}