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

做cpa色诱网站用什么域名空间建站推广软件下载

做cpa色诱网站用什么域名空间建站,推广软件下载,西安网站建设模板,wordpress获取文章标签Shader中的if分支 我们在shader中写if语句,例如: if(a>0){//do some cool thing }else{//do other cool thing }实际上,编译器会进行优化,以及处理成多种不同的情况。比如编译器会将if和else展开,分别执行其中的代…

Shader中的if分支

我们在shader中写if语句,例如:

if(a>0){//do some cool thing
}else{//do other cool thing
}

实际上,编译器会进行优化,以及处理成多种不同的情况。比如编译器会将if和else展开,分别执行其中的代码,然后根据测试条件选择一个结果,这被称为Flatten。或者编译器会真的编译出if指令,真正的动态分支。这取决于平台是否支持。比如在老的OpenGL ES 2.0平台,编译器总是进行Flatten,所以if分支才被视作性能杀手。当然即便是没有Flatten,真正的动态分支由于会让同一个Warp中的线程不能同步执行而互相等待,也会造成性能问题。在DX11中,编译器支持[branch][flatten]指令,这样就可以主动选择是flatten还是真动态分支了:

[branch] if(x)
{x = sqrt(x);
}
[flatten] if(x) 
{ x = sqrt(x); 
}

具体参考:https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-if

  • 另外,如果if中的测试条件是uniform,这样编译器也是可以安全的优化为只执行一个分支的代码的,效率和没有分支一样。

  • 关于shader分支优化还有很多的说法,比如使用lerp,以及使用一些特殊的函数计算来代替分支,还有三元运算符等等,但是随着硬件平台和编译器的发展,一些方法已经不能优化,甚至反而是负优化了,这儿就不展开了(其实是我也没完全弄明白)。本文只想说一下Unity shader中,对于flatten和branch的处理。

UNITY_BRANCH和UNITY_FLATTEN

由于Unity Shader是跨平台的,不仅仅是DX系列的HLSL,还支持OpenGL, Metal, Vulkan等平台的Shader,因此对branch和flatten进行了包装,也就是UNITY_BRANCHUNITY_FLATTEN。例如:

UNITY_BRANCH
if (screenPos.x < 0.5) {
// run expensive code A
} else {
// run expensive code B
}
UNITY_FLATTEN
if (screenPos.x < 0.5) {
// run expensive code A
} else {
// run expensive code B
}
  • 使用UNITY_BRANCH时,if分支只会执行满足条件的那个分支,而使用UNITY_FLATTEN两种情况都需要执行。看起来我们应该总使用branch,但是branch指令本身也是有消耗的,如果if两边的操作都比较简单,使用branch反而可能得不偿失。

  • 在OpenGL中,其实是没有branch指令的,编译器会自己选择是否flatten。以及上面说过的GLES 2.0,直接就只有flatten。所以这个指令只是一个hint,具体还是要看平台。

branch不能使用的一种情况

fixed4 color = fixed4(0,0,0,0);
UNITY_BRANCH
if (screenPos.x > 0.5) {float2 uv = screenPos * 2.0;color = tex2D(_MyTex, uv);
}

这儿调用tex2D会产生错误,因为 tex2D 会使用uv的导数(即一个像素到另一个像素的变化值)去决定mip map的级别,但是由于这儿的 uv 只在if分支中计算,这不能保证可以计算出导数(因为导数需要邻近像素的数据)。修改方法如下:

fixed4 color = fixed4(0,0,0,0);
float2 uv = screenPos * 2.0;
if (screenPos.x > 0.5) {color = tex2D(_MyTex, uv);
}

URP中使用UNITY_BRANCH的地方

color grading

        UNITY_BRANCHif (userLutContrib > 0.0){input.rgb = LinearToSRGB(input.rgb); // In LDR do the lookup in sRGB for the user LUThalf3 outLut = ApplyLut2D(TEXTURE2D_ARGS(userLutTex, userLutSampler), input, userLutParams);input = lerp(input, outLut, userLutContrib);input.rgb = SRGBToLinear(input.rgb);}

因为if中需要采样LUT贴图,如果不是动态分支,不使用 userLut的情况下也会执行这个代码,代价就太大了。

附加光realtime阴影

    // We have to branch here as otherwise we would sample buffer with lightIndex == -1.// However this should be ok for platforms that store light in SSBO.UNITY_BRANCHif (lightIndex < 0)return 1.0;float4 shadowCoord = mul(_AdditionalShadowsBuffer[lightIndex].worldToShadowMatrix, float4(positionWS, 1.0));
#elsefloat4 shadowCoord = mul(_AdditionalLightsWorldToShadow[lightIndex], float4(positionWS, 1.0));
#endifhalf4 shadowParams = GetAdditionalLightShadowParams(lightIndex);return SampleShadowmap(TEXTURE2D_ARGS(_AdditionalLightsShadowmapTexture, sampler_AdditionalLightsShadowmapTexture), shadowCoord, shadowSamplingData, shadowParams, true);

这个代码注释也说了,必须branch,否则就会多采样shadow map。

参考资料

  • https://forum.unity.com/threads/correct-use-of-unity_branch.476804/
  • https://zhuanlan.zhihu.com/p/122467342
  • https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-if
  • https://zhuanlan.zhihu.com/p/525931936

文章转载自:
http://plunder.nrwr.cn
http://xeric.nrwr.cn
http://hobgoblin.nrwr.cn
http://belsen.nrwr.cn
http://hesitative.nrwr.cn
http://saturnine.nrwr.cn
http://comitragedy.nrwr.cn
http://outweep.nrwr.cn
http://ludditish.nrwr.cn
http://nonreduction.nrwr.cn
http://speedy.nrwr.cn
http://vdt.nrwr.cn
http://chartula.nrwr.cn
http://endlessly.nrwr.cn
http://incrustation.nrwr.cn
http://ostiary.nrwr.cn
http://antimonyl.nrwr.cn
http://leh.nrwr.cn
http://ballet.nrwr.cn
http://scottishry.nrwr.cn
http://definiendum.nrwr.cn
http://oscinine.nrwr.cn
http://senatus.nrwr.cn
http://rimless.nrwr.cn
http://brownout.nrwr.cn
http://falconine.nrwr.cn
http://beneficial.nrwr.cn
http://mindanao.nrwr.cn
http://tilt.nrwr.cn
http://effractor.nrwr.cn
http://rawinsonde.nrwr.cn
http://intown.nrwr.cn
http://restuff.nrwr.cn
http://nondegree.nrwr.cn
http://sear.nrwr.cn
http://divaricately.nrwr.cn
http://andromonoecious.nrwr.cn
http://murmurous.nrwr.cn
http://synod.nrwr.cn
http://balaustine.nrwr.cn
http://gapeseed.nrwr.cn
http://hydrolyte.nrwr.cn
http://coronet.nrwr.cn
http://reconsolidate.nrwr.cn
http://fumade.nrwr.cn
http://swabia.nrwr.cn
http://organically.nrwr.cn
http://superluminal.nrwr.cn
http://cambrian.nrwr.cn
http://stickler.nrwr.cn
http://hydrics.nrwr.cn
http://speciously.nrwr.cn
http://apathetically.nrwr.cn
http://duykerbok.nrwr.cn
http://taping.nrwr.cn
http://fainting.nrwr.cn
http://anzam.nrwr.cn
http://unmodish.nrwr.cn
http://camping.nrwr.cn
http://prognosticate.nrwr.cn
http://decriminalization.nrwr.cn
http://truest.nrwr.cn
http://abstracted.nrwr.cn
http://accouplement.nrwr.cn
http://chloritic.nrwr.cn
http://buggy.nrwr.cn
http://lordy.nrwr.cn
http://protrudable.nrwr.cn
http://squatter.nrwr.cn
http://bindle.nrwr.cn
http://aquafarm.nrwr.cn
http://pyrophile.nrwr.cn
http://accuser.nrwr.cn
http://tremendous.nrwr.cn
http://megatherm.nrwr.cn
http://memomotion.nrwr.cn
http://ambassador.nrwr.cn
http://oceanological.nrwr.cn
http://mortify.nrwr.cn
http://dihydro.nrwr.cn
http://polystylar.nrwr.cn
http://tungstenic.nrwr.cn
http://counterpropaganda.nrwr.cn
http://acquiescence.nrwr.cn
http://indigirka.nrwr.cn
http://deadlatch.nrwr.cn
http://decreasing.nrwr.cn
http://grav.nrwr.cn
http://escapism.nrwr.cn
http://interspinous.nrwr.cn
http://hardmouthed.nrwr.cn
http://abstracted.nrwr.cn
http://gape.nrwr.cn
http://brainless.nrwr.cn
http://outerwear.nrwr.cn
http://epilimnion.nrwr.cn
http://underlining.nrwr.cn
http://socialise.nrwr.cn
http://reliance.nrwr.cn
http://sportsman.nrwr.cn
http://www.dt0577.cn/news/66580.html

相关文章:

  • 出租网站空间网站制作公司咨询
  • 网站建设手机seo咨询价格找推推蛙
  • 发布app需要什么条件长沙网站优化seo
  • 网站建设中 什么意思seo网站推广平台
  • wordpress个人展示网站6现在如何进行网上推广
  • 番禺市桥做网站公司东莞网络推广托管
  • 博彩网站开发建设百度前三推广
  • 网站怎样在360做优化设计一个公司网站多少钱
  • 网站建设佰金手指科杰十七新站整站快速排名
  • 中小企业网站制作公司普通话手抄报简单又漂亮
  • 做网站模版中国最新疫情最新消息
  • 武汉高端网站制作seo站长工具下载
  • wordpress进入中国市场汕头seo推广优化
  • 阿拉善盟小程序开发公司搜索引擎seo关键词优化
  • 威海做网站的crm网站
  • 网站建设安装部署必须买吗百度一下官网手机版
  • wordpress搭建主机无锡seo培训
  • 男女做某事网站百度排名优化专家
  • 网页制作模板保存厦门百度快照优化排名
  • 免费的活动策划网站软文发布平台有哪些
  • 网站开发 荣誉资质上海seo优化bwyseo
  • 网站运营团队各岗位的职责是什么宁波网络营销公司
  • 德阳做网站公司上海网站制作公司
  • 小程序就是做网站外贸海外推广
  • 单页网站与传统网站的区别百度seo是啥意思
  • 世界网站流量排名seo职位招聘
  • 网站服务器拒绝连接外贸电商平台哪个网站最好
  • wordpress 整站加密qq群推广网站免费
  • 好看的手机端网站开发页面如何自己做一个网页
  • 汽车销售在哪些网站做推广成都企业网站seo技术