当前位置: 首页 > news >正文

南宁网站开发站长工具使用方法

南宁网站开发,站长工具使用方法,昆明企业网站开发,上海网站建设定3.2.3 以前属于Shader部分,Shader部分不进行讲解。 这里只涉及Unity内部管线的设置问题。 文章目录 3.2.3 向GPU发送灯光数据设置光源数据设置主光源设置额外点光源 Shader中的数据 3.2.3 向GPU发送灯光数据 在UniversalRenderPipeline.cs > RenderSingleCamera…

在这里插入图片描述
3.2.3 以前属于Shader部分,Shader部分不进行讲解。
这里只涉及Unity内部管线的设置问题。

文章目录

  • 3.2.3 向GPU发送灯光数据
    • 设置光源数据
      • 设置主光源
      • 设置额外点光源
  • Shader中的数据

3.2.3 向GPU发送灯光数据

UniversalRenderPipeline.cs > RenderSingleCamera()下调用函数renderer.Execute()
在这里插入图片描述
该函数走向ScriptableRenderer.cs>Execute()函数,该函数调用了SetupLights()函数
在这里插入图片描述
SetupLights()函数为一个虚函数
在这里插入图片描述
具体实现在UniversalRenderer.cs>SetupLights()
在这里插入图片描述
该方法调用了m_ForwardLights实例下的_ForwardLights.Setup(context, ref renderingData);方法

URP中关于前向渲染的灯光设置,即在ForwardLights.cs

SetUp()函数将来自于ref RenderingData renderingData中的灯光数据发送到GPU。

public void Setup(ScriptableRenderContext context, ref RenderingData renderingData)
{CommandBuffer cmd = CommandBufferPool.Get();using (new ProfilingScope(null, m_ProfilingSampler)){// 设置ClusteredRendering(Forward+)属性参数if (useClusteredRendering){...}// 设置Shader常量属性SetupShaderLightConstants(cmd, ref renderingData);// 设置Shader关键字bool lightCountCheck = (renderingData.cameraData.renderer.stripAdditionalLightOffVariants && renderingData.lightData.supportsAdditionalLights) || additionalLightsCount > 0;CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.AdditionalLightsVertex,lightCountCheck && additionalLightsPerVertex && !useClusteredRendering);CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.AdditionalLightsPixel,lightCountCheck && !additionalLightsPerVertex && !useClusteredRendering);CoreUtils.SetKeyword(cmd, ShaderKeywordStrings.ClusteredRendering,useClusteredRendering);...// 设置LightCookie(灯光遮罩)m_LightCookieManager.Setup(context, cmd, ref renderingData.lightData);}context.ExecuteCommandBuffer(cmd);CommandBufferPool.Release(cmd);
}

其中,关键字【ShaderKeywordStrings.AdditionalLightsVertex】 在 UniversalRenderPipelineCore中定义
在这里插入图片描述

设置光源数据

注意:这里使用引用传递传递RenderingData ,因为RenderingData 结构的数据量很大。

void SetupShaderLightConstants(CommandBuffer cmd, ref RenderingData renderingData)
{m_MixedLightingSetup = MixedLightingSetup.None;// 主光源有一个优化的主光源着色器路径。这将有利于那些只关心单一光线的游戏。// 通用管道也只支持单个阴影光,如果可用,它将是主光源。SetupMainLightConstants(cmd, ref renderingData.lightData);SetupAdditionalLightConstants(cmd, ref renderingData);
}

设置主光源

在ForwardLight中设置了如下GPU参数
在这里插入图片描述
在这里插入图片描述

void SetupMainLightConstants(CommandBuffer cmd, ref LightData lightData)
{Vector4 lightPos, lightColor, lightAttenuation, lightSpotDir, lightOcclusionChannel;uint lightLayerMask;// 根据visibleLights[mainLightIndex]数据,获取out的如下数据InitializeLightConstants(lightData.visibleLights, lightData.mainLightIndex, out lightPos, out lightColor, out lightAttenuation, out lightSpotDir, out lightOcclusionChannel, out lightLayerMask);// 将数据cmd.SetGlobalVector(LightConstantBuffer._MainLightPosition, lightPos);cmd.SetGlobalVector(LightConstantBuffer._MainLightColor, lightColor);cmd.SetGlobalVector(LightConstantBuffer._MainLightOcclusionProbesChannel, lightOcclusionChannel);cmd.SetGlobalInt(LightConstantBuffer._MainLightLayerMask, (int)lightLayerMask);
}

其中,InitializeLightConstants函数如下

void InitializeLightConstants(NativeArray<VisibleLight> lights, int lightIndex, out Vector4 lightPos, out Vector4 lightColor, out Vector4 lightAttenuation, out Vector4 lightSpotDir, out Vector4 lightOcclusionProbeChannel, out uint lightLayerMask)
{// 得到前5个数据UniversalRenderPipeline.InitializeLightConstants_Common(lights, lightIndex, out lightPos, out lightColor, out lightAttenuation, out lightSpotDir, out lightOcclusionProbeChannel);// 得到lightLayerMask lightLayerMask = 0;...lightLayerMask = (uint)additionalLightData.lightLayerMask;
}

设置额外点光源

在这里插入图片描述

额外光源与主光源相同,只是传入的数据是一个数组,数组长度与最大额外光源数相同。

核心函数:

InitializeLightConstants(lights, i, out m_AdditionalLightPositions[lightIter],out m_AdditionalLightColors[lightIter],out m_AdditionalLightAttenuations[lightIter],out m_AdditionalLightSpotDirections[lightIter],out m_AdditionalLightOcclusionProbeChannels[lightIter],out lightLayerMask);

Shader中的数据

在URP>Input.hlsl中可找到定义
在这里插入图片描述
在这里插入图片描述

之后便可以用这些光照数据计算着色~~~

http://www.dt0577.cn/news/37621.html

相关文章:

  • 富邦建设控股集团网站佛山网站seo
  • 宁波 网站建设排名第一的助勃药
  • 网站开发前端设计seo搜索引擎优化培训班
  • php网站 config网络优化师是什么工作
  • 郑州金水区做网站公司百度指数的作用
  • 泉州seo网站关键词优搜索引擎营销总结
  • 查看公司股票的网站百度上做优化
  • 自己做网站 什么北京seo排名方法
  • 响应式设计网站新闻头条
  • 松江网站建设品划网络网络销售就是忽悠人
  • seo站内优化包括企业邮箱格式
  • 建筑工程公司是干嘛的北京做的好的seo公司
  • 论文网站的负载测试是如何做的网络推广引流是做什么的
  • 网站建设怎样把网页连接起来南宁百度快速排名优化
  • 个人导航网站怎么备案网站排名查询平台
  • 大型网站快速排名百度推广首次开户需要多少钱
  • 济南商城网站建设多少钱优化营商环境发言稿
  • 教做家常菜的视频网站如何网页优化
  • 微信第三方网站怎么做湖南网站建设推广
  • 浙江省建设局网站施工图审查网络营销与直播电商专业
  • 怎么开一个平台seo关键词优化怎么收费
  • 建设网站网站百度百度一下一下
  • 免费建立微网站买了500元黑科技引流靠谱吗
  • 推荐网站建设案例班级优化大师是干什么用的
  • 网站推广的软件seo搜索引擎优化工资
  • 网站建设的组织结构互联网营销外包推广
  • 数据中台建设方案seo网络推广排名
  • 广州黄埔做网站公司网站关键词搜索
  • jsq项目做网站自媒体135的网站是多少
  • 如何做 网站映射营销型网站建设的主要流程包括