shader 的 nounroll

摘要:
一个特殊的问题刚刚解决。客户要求在运行时确定着色器中循环迭代器的数量。

刚刚解决了一个特别坑的问题。

客户有个需求 需要shader里面 loop 的iterator数量 在运行时确定。z

这样对于里面存在  sample的loop就会被force unroll但因为count不确定 就没法unroll就编译不过了

我发现只有一个方法就是 关掉unroll 

我试验了各种 在shader里面用预编译指令 关unroll 的方法

orbis 平台 #pragma unroll

      #pragma loop(unroll: never)

(见文档 unroll)

d3d 平台

     [fastopt]

https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwiI9Ye4y93KAhWHUqYKHWbgDokQFggiMAE&url=https%3A%2F%2Fmsdn.microsoft.com%2Fzh-cn%2Flibrary%2Fwindows%2Fdesktop%2Fbb509602(v%3Dvs.85).aspx&usg=AFQjCNG3yrRUDxW1nza1GkD4lzEC4D_XfA

什么的都是骗人的 ,以上这些在for(){}前面加的控制命令都不管用

在psslc的文档里我找到了更为bt的关闭方法 在调用psslc.exe的时候 用-nounroll-all-loops的方法 

但是d3dcompiler那里编不过 

这就要说到psslc的恶心策略了,一个shader要编两边

gnm平台 第一遍用d3dcompiler_47感觉是用 d3d的effect框架 把renderstate那出来

之后再用psslc编一次

这样就要求 写的一个shader在两个平台下都能过,可无论如何我也没有办法在d3d平台关掉强制unroll

后来,想到用编译指令在d3d平台把那句sample 注掉.....这样d3d就不会要求强制unroll了

因为只是提供renderstate的设置 所以这并不影响结果

#if define (PHYRE_D3DFX)

#if define (__ORBIS__)

万事大吉

免责声明:文章转载自《shader 的 nounroll》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇L1-039. 古风排版常用ArcEngine开发代码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

FPS 游戏实现D3D透视 (API Hook)

FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视,本教程将学习D3D透视的实现原理,并通过DLL注入的方式实现透视。 反恐精英下载地址:链接:https://pan.baidu.com/s/1U4-E9-x...

D3D中的渲染状态简介

1). 设置着色模式:                                                          SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式 SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) /...

【Unity】Standard Shader实现分析

记录Unity的标准着色器实现,基于Unity 2017.1版本的代码进行分析。 Standard Shader 文件位于DefaultResourcesExtraStandard.shader 1 //Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT lic...

OpenGL教程一

引自:https://blog.csdn.net/u013654125/article/details/73613644 GLEW, GLFW和GLM介绍 现在你有了工程,就让我们开始介绍下工程所用到的开源库和为啥需要这些。 The OpenGL Extension Wrangler (GLEW)是用来访问OpenGL 3.2 API函数的。不幸的是你不能...

游戏性能指标

对不同主流机器(一般来自TOP20配置,覆盖90%以上的设备)根据不同硬件能力建立高、中、低等多档性能指标,游戏按照该指标对应多个画质选项进行适配。 CPU负载:一帧内执行的指令数 GPU负载:一帧内执行的shader指令数 FPS:游戏每秒运行的帧数 ① GPU瓶颈 影响因素有:DrawCall数、shader复杂度、纹理采样、透明物件、OverDraw...

Shader Variants 打包遇到的问题

1. 遇到的问题 最常见的是打包到手机后效果与PC上不一致,具体情况比如: 光照贴图失效 雾失效 透明或者cutoff失效 以上首先需要检查的地方是Shader变体的编译设置 2. 超级着色器编译成N个变体 如果需要多吧功能类似的shader, 比把透明,Cutoff和不透明等多个功能集合到一个Shader上,通常把这样的Shader称之为"超级着色器...