今天有个小伙伴问我,他的Shader遇到 No subshaders can run on this graphics card 问题。
我问了一下原来他的Shader是从别的游戏里面借鉴的,我想了一下这个Shader可能是在老的版本上创建的,在新的Unity版本上会有问题。
解决办法:在Unity里Creat一个新的Shader,把出问题的Shader里面的代码原封不动的拷贝进来,问题解决。嘿嘿。 博客记录一下。。
- 本文固定链接: https://www.xuanyusong.com/archives/2681
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
我想问一下,我反编译后得到的shader是这样的:Shader “ALTO/Additive Overlay Alpha” { Properties{ _MainTex(“Texture 1”, 2D) = “white” { } _SecondaryTex(“Texture 2”, 2D) = “white” { } _SecondaryTexScale(“Texture 2 Scale”, Color) = (0,0,0,0) } SubShader{ Tags{ “LIGHTMODE” = “Vertex” “QUEUE” = “Overlay” } Pass{ Tags{ “LIGHTMODE” = “Vertex” “QUEUE” = “Overlay” } ZTest Always ZWrite Off Blend SrcAlpha One GpuProgramID 36451 Program “vp” { SubProgram “gles ” { “!!GLES #version 100#ifdef VERTEX attribute vec4 _glesVertex; attribute vec4 _glesColor; attribute vec4 _glesMultiTexCoord0; uniform highp mat4 glstate_matrix_mvp; uniform highp vec4 _SecondaryTex_ST; uniform highp vec4 _MainTex_ST; varying lowp vec4 xlv_COLOR0; varying highp vec2 xlv_TEXCOORD0; varying highp vec2 xlv_TEXCOORD1; varying highp vec2 xlv_TEXCOORD2; void main() { lowp vec4 tmpvar_1; mediump vec4 tmpvar_2; tmpvar_2 = clamp(_glesColor, 0.0, 1.0); tmpvar_1 = tmpvar_2; highp vec4 tmpvar_3; tmpvar_3.w = 1.0; tmpvar_3.xyz = _glesVertex.xyz; xlv_COLOR0 = tmpvar_1; xlv_TEXCOORD0 = ((_glesMultiTexCoord0.xy * _SecondaryTex_ST.xy) + _SecondaryTex_ST.zw); highp vec2 tmpvar_4; tmpvar_4 = (_glesMultiTexCoord0.xy * _MainTex_ST.xy); xlv_TEXCOORD1 = (tmpvar_4 + _MainTex_ST.zw); xlv_TEXCOORD2 = (tmpvar_4 + _MainTex_ST.zw); gl_Position = (glstate_matrix_mvp * tmpvar_3); } ………这个shader貌似是编译后得到的shader,我用不了,编译器在Program “vp”这一行报错,请问我该怎么才能使用反编译得来的shader呢?
行不通~~
我试过,你这个方法是不行的
嗯? 我之前试了是可以的, 可能有的不行吧。。
这么简单,哈哈哈!!