关于 Shader error in 'Standard (Roughness setup)': undeclared identifier 'RoughnessSetup_Reflectivity'

原创 2018年04月17日 18:55:44

最近在unity打包android的时候遇到了这个错误,这个shader是官方的一个shader,这个报错已经被确认是unity的一个BUG,BUG地址

解决方案

方案1.关掉unity,删掉工程中的Library文件夹重启系统打包。

方案2.android player setting里面把Auto Graphics API 去掉,然后把OpenGLES2去掉,去掉的时候会重新加载一遍资源,加载完之后再把OpenGLES2加上。

方案3.找到使用Standard (Roughness setup)的材质替换成其他材质。

方案4. 1和2有时候有用有时候可能没有用,而且每次转换资源很烦,项目很大的话就要很久的时间,3在这个shader不是必须的话可以解决,如果你的项目必须要用这个shader,那就不行了。这里我自己研究了下unity的shader发现报这个错误是一个shader的函数找不到,这个RoughnessSetup_Reflectivity根本就没有定义,至于为什么有时候能打包成功就不是很清楚了,这里我改了一下官方的shader可以编译通过了,也没有什么副作用,如果用了这种方法有什么问题的话可以留言大家一起讨论下。

    首先打开unity安装目录下面的 Editor\Data\CGIncludes\UnityStandardCoreForwardSimple.cginc,在第48行加入下面的代码

half RoughnessSetup_Reflectivity()
{
    return SpecularStrength(_SpecColor.rgb);
}
关掉unity重新启动编辑,就好了。

Standard shader 和 Standard (Specular setup) Shader

这一节我们来看一下两种工作模式 Metallic(金属) 和  Specular(高光)
  • jk823394954
  • jk823394954
  • 2015-11-08 13:25:25
  • 2657

官方Character.unitypakge 升级到5.4以后出现shader编译问题

https://docs.unity3d.com/Manual/UpgradeGuide54.html If you are sampling them manually in your shade...
  • damenhanter
  • damenhanter
  • 2016-09-13 14:09:19
  • 943

vector 解决方法 error C2065: 'vector' : undeclared identifier

使用Vector  需要加头文件 #include  并在其下面添加using namespace std; 即可
  • wk119911
  • wk119911
  • 2011-06-08 17:08:00
  • 7249

arp error C2065

  • 2008年04月03日 19:18
  • 21KB
  • 下载

Unity5.x Standard Shader在手机上的实现(二)

在低端机实现的次时代材质场景研究和分享
  • zsy654321
  • zsy654321
  • 2017-02-12 15:34:15
  • 3120

error C2065: 'new' : undeclared identifier,主要是因为是.C文件

char *filename=new char[100]; 在.C文件中,就出现new 没声明, 如果是在.cpp文件中,就没有任何问题...
  • liulina603
  • liulina603
  • 2013-09-29 13:53:43
  • 4574

error C2065: 'SOCKET' : undeclared identifier error C2146: syntax error : missing ';' before identi

1>c:\program files\mysql\mysql server 5.0\include\mysql_com.h(183) : error C2146: syntax error : mis...
  • MAZHEN1986
  • MAZHEN1986
  • 2012-07-28 15:07:27
  • 2813

关于unity里pbr技术和材质 unity5默认shader和传统的对比

刚开始也不知道什么是pbr (Physically Based Rendering)后来才发现这是一种新的渲染方式 与之对应的是材质是pbs(Physically Based Shader) (un...
  • shenmifangke
  • shenmifangke
  • 2016-01-26 14:59:46
  • 37459

error C2065: 'cout' : undeclared identifier

问题: 网上解决方案: 1.没有加#include using namespace std;or 2.包含的库的顺序需要调整一下...
  • pursue16
  • pursue16
  • 2017-06-01 12:27:27
  • 1317

解决编译Gh0st时error C2065: 'IDC_HAND' : undeclared identifier

这是因为ScreenManager.cpp定义了_WIN32_WINNT为0x0400,而WinUser.h中WINVER必须大于等于0x0500才定义IDC_HAND(WINVER即_WIN32_W...
  • szhhck
  • szhhck
  • 2015-06-19 11:21:10
  • 2258
收藏助手
不良信息举报
您举报文章:关于 Shader error in 'Standard (Roughness setup)': undeclared identifier 'RoughnessSetup_Reflectivity'
举报原因:
原因补充:

(最多只允许输入30个字)