求助unityshadercache的含义 以及16unity 读写二进制文件编辑

求助 unityshadercache的含义 以及16进制编辑_崩坏学园修改吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:32,819贴子:
求助 unityshadercache的含义 以及16进制编辑
想改另外一款游戏 但是他的data下有很多文件 所以有点慌..
今天才发现的,研究了几...
之前我看了一下生吧精品...
人物,武器,16进制,已...
焚烧自己所向往的憧憬
内&&容:使用签名档&&
保存至快速回贴14715人阅读
转载请注明出处:写在前面一直以来,Unity Surface Shader背后的机制一直是初学者为之困惑的地方。Unity Surface Shader在Unity 3.0的时候被开放给公众使用,其宣传手段也是号称让所有人都可以轻松地写shader。但由于资料缺乏,很多人知其然不知其所以然,无法理解Unity Surface Shader在背后为我们做了哪些事情。前几天一直被问到一个问题,为什么我的场景里没有灯光,但物体不是全黑的呢?为什么我把Light的颜色调成黑色,物体还是有一些默认颜色呢?这些问题其实都是因为那些物体使用了Surface Shader的缘故。因此,了解Surface Shader背后的机制是非常重要滴~虽然Surface Shader一直是一个神秘的存在,但其实Unity给了我们揭开她面纱的方式:查看它生成的CG代码。大家应该都知道,所谓的Surface Shader实际上是封装了CG语言,隐藏了很多光照处理的细节,它的设计初衷是为了让用户仅仅使用一些指令(#pragma)就可以完成很多事情,并且封装了很多常用的光照模型和函数,例如Lambert、Blinn-Phong等。而查看Surface Shader生成的代码也很简单:在每个编译完成的Surface Shader的面板上,都有个“Show generated code”的按钮,像下面这样:点开后,就可以查看啦~面板上还表明了很多其他的有用信息。而这些方便的功能实际上是Unity 4.5发布出来的。详情可见。使用Surface Shader,很多时候,我们只需要告诉shader,“嘿,使用这些纹理去填充颜色,法线贴图去填充法线,使用Lambert光照模型,其他的不要来烦我!!!”我们不需要考虑是使用forward还是deferred rendering,有多少光源类型、怎样处理这些类型,每个pass需要处理多少个光源!!!(人们总会rant写一个shader是多么的麻烦。。。)So!Unity说,不要急,放着我来~上面的情景当然对于小白是比较简单的方式,Surface Shader可以让初学者快速实现很多常见的shader,例如漫反射、高光反射、法线贴图等,这些常见的效果也都不错。而对应面就是,由于隐藏了很多细节,如果想要自定义一些比较复杂或特殊的效果,使用Surface Shader就无法达到了(或者非常麻烦)。在学了一段时间的Surface Shader后,我认为:如果你从来没有学习过怎样编写shader,而又想写一些常见的、比较简单的shader,那仅学习Surface Shader是一个不错的选择。如果你向往那些高品质的游戏画面,那么Surface Shader是远远无法满足你的,而且某种方面来说它会让你变得越来越困惑。困惑了怎么办呢?老老实实去学习主流的渲染语言吧~比如CG、GLSL、HLSL等。等学了一些上述内容后,再回过头来看Surface Shader就会别有一番理解了。说教了这么多,本篇的主旨其实是分析下Surface Shader背后做的事情啦!也就是,分析Surface Shader到底是怎样解析我们编写的那些surf、LightingXXX等函数的,又是如何得到像素颜色的。那么,开始吧!流水线首先,我们要明白Surface Shader支持哪些特性。详情请见。Surface Shader最重要的部分是两个结构体以及它的编译指令。两个结构体两个结构体就是指struct&Input和SurfaceOutput。其中Input结构体是允许我们自定义的。它可以包含一些纹理坐标和其他提前定义的变量,例如view direction(float3 viewDir)、world space position(worldPos)、world space reflection vector(float3 worldRefl)等。这些变量只有在真正使用的时候才会被计算生成。比如,在某些Pass里生成而某些就生成。另一个结构体是SurfaceOutput。我们无法自定义这个结构体内的变量。关于它最难理解的也就是每个变量的具体含义以及工作机制(对像素颜色的影响)。我们来看一下它的定义(在Lighting.cginc里面):struct SurfaceOutput {
};Albedo:我们通常理解的对光源的反射率。它是通过在Fragment Shader中计算颜色叠加时,和一些变量(如vertex lights)相乘后,叠加到最后的颜色上的。Normal:即其对应的法线方向。只要是受法线影响的计算都会受到影响。Emission:自发光。会在Fragment 最后输出前(调用final函数前,如果定义了的话),使用下面的语句进行简单的颜色叠加:c.rgb += o.ESpecular:高光反射中的指数部分的系数。影响一些高光反射的计算。按目前的理解,也就是在光照模型里会使用到(如果你没有在光照函数等函数——包括Unity内置的光照函数,中使用它,这个变量就算设置了也没用)。有时候,你只在surf函数里设置了它,但也会影响最后的结果。这是因为,你可能使用了Unity内置的光照模型,如BlinnPhong,它会使用如下语句计算高光反射的强度(在Lighting.cginc里):float spec = pow (nh, s.Specular*128.0) * s.GGloss:高光反射中的强度系数。和上面的Specular类似,一般在光照模型里使用。Alpha:通常理解的透明通道。在Fragment Shader中会直接使用下列方式赋值(如果开启了透明通道的话):c.a = o.A上述结论是分析生成的代码所得,若有不对欢迎指出。大家碰到不懂的,也可以像这样分析生成的代码,一般问题都可以理解啦~编译指令编译指令的一般格式如下:#pragma surface surfaceFunction lightModel [optionalparams]Surface Shader和CG其他部分一样,代码也是要写在CGPROGRAM和ENDCG之间。但区别是,它必须写在SubShader内部,而不能写在Pass内部。Surface Shader自己会自动生成所需的各个Pass。由上面的编译格式可以看出,surfaceFunction和lightModel是必须指定的,而且是可选部分。surfaceFunction通常就是名为surf的函数(函数名可以任意),它的函数格式是固定的:void surf (Input IN, inout SurfaceOutput o)即Input是输入,SurfaceOutput是输出。lightModel也是必须指定的。由于Unity内置了一些光照函数——Lambert(diffuse)和Blinn-Phong(specular),因此这里在默认情况下会使用内置的Lambert模型。当然我们也可以自定义。optionalparams包含了很多可用的指令类型,包括开启、关闭一些状态,设置生成的Pass类型,指定可选函数等。这里,我们只关注可指定的函数,其他可去自行查看。除了上述的surfaceFuntion和lightModel,我们还可以自定义两种函数:vertex:VertexFunction和finalcolor:ColorFunction。也就是说,Surface Shader允许我们自定义四种函数。两个结构体+四个函数——它们在整个的render pipeline中的流程如下:从上图可以看出来,Surface Shader背后的”那些女人“就是vertex shader和fragment shader。除了VertexFunction外,另外两个结构体和三个函数都是在fragment shader中扮演了一些角色。Surface Shader首先根据我们的代码生成了很多Pass,用于forwardbase和forwardadd等,这不在本篇的讨论范围。而每个Pass的代码是基于上述四个函数生成的。以一个Pass的代码为例,Surface Shader的生成过程简述如下:直接将CGPROGRAM和ENDCG之间的代码复制过来(其实还是更改了一些编译指令),这些代码包括了我们对Input、surfaceFuntion、LightingXXX等变量和函数的定义。这些函数和变量会在之后的处理过程中当成普通的结构体和函数进行调用,就和在C++中我们会在main函数中调用某些函数一样;分析上述代码,生成v2f_surf结构,用于在Vertex Shader和Fragment Shader之间进行数据传递。Unity会分析我们在四个自定义函数中所使用的变量,例如纹理坐标等。如果需要,它会在v2f_surf中生成相应的变量。而且,即便有时我们在Input中定义了某些变量(如某些纹理坐标),但Unity在分析后续代码时发现我们并没有使用这些变量,那么这些变量实际上是不会在v2f_surf中生成的。这也就是说,Unity做了一些优化动作。生成Vertex Shader。 *&如果我们自定义了VertexFunction,Unity会在这里首先调用VertexFunction修改顶点数据;然后分析VertexFunction修改的数据,最后通过Input结构体将修改结果存储到v2f_surf中。 * 计算v2f_surf中其他默认的变量值。这主要包括了pos、纹理坐标、normal(如果没有使用LightMap)、vlight(如果没有使用LightMap)、lmap(如果使用LightMap)等。 * 最后,通过内置的TRANSFER_VERTEX_TO_FRAGMENT指令将v2f_surf传递给下面的Fragment Shader。生成Fragment Shader。 * 使用v2f_surf中的对应变量填充Input结构,例如一些纹理坐标等。 * 调用surfFuntion填充SurfaceOutput结构。 * 调用LightingXXX函数得到初始的颜色值。 * 进行其他的颜色叠加。如果没有启用LightMap,这里会使用SurfaceOutput.Albedo和v2f_surf.vlight的乘积和原颜色值进行叠加;否则会进行一些更复杂的颜色叠加。 * 最后,如果自定了final函数,则调用它进行最后额颜色修改。代码分析我们以一个Surface Shader为例,分析它生成的代码。Surface Shader如下:Shader &Custom/BasicDiffuse& {
Properties {
_EmissiveColor (&Emissive Color&, Color) = (1,1,1,1)
_AmbientColor
(&Ambient Color&, Color) = (1,1,1,1)
_MySliderValue (&This is a Slider&, Range(0,10)) = 2.5
_RampTex (&Ramp Texture&, 2D) = &white&{}
SubShader {
Tags { &RenderType&=&Opaque& &RenderType&=&Opaque& }
#pragma surface surf BasicDiffuse vertex:vert finalcolor:final noforwardadd
#pragma debug
float4 _EmissiveC
float4 _AmbientC
float _MySliderV
sampler2D _RampT
struct Input
float2 uv_RampT
float4 vertC
void vert(inout appdata_full v, out Input o)
o.vertColor = v.
void surf (Input IN, inout SurfaceOutput o)
pow((_EmissiveColor + _AmbientColor), _MySliderValue);
o.Albedo = c.rgb + tex2D(_RampTex, IN.uv_RampTex).
o.Alpha = c.a;
inline float4 LightingBasicDiffuse (SurfaceOutput s, fixed3 lightDir, fixed atten)
float difLight = max(0, dot (s.Normal, lightDir));
float hLambert = difLight * 0.5 + 0.5;
float3 ramp = tex2D(_RampTex, float2(hLambert)).
col.rgb = s.Albedo * _LightColor0.rgb * (ramp) *
col.a = s.A
void final(Input IN, SurfaceOutput o, inout fixed4 color) {
color = color * 0.5 + 0.5;
FallBack &Diffuse&
它包含了全部四个函数,以及一些比较常见的运算。为了只关注一个Pass,我添加了noforwardadd指令。它所得到的渲染结果不重要(事实上我只是在BasicDiffuse上瞎改了一些。。。)我们点开查看它生成的代码:Shader &Custom/BasicDiffuse_Gen& {
Properties {
_EmissiveColor (&Emissive Color&, Color) = (1,1,1,1)
_AmbientColor
(&Ambient Color&, Color) = (1,1,1,1)
_MySliderValue (&This is a Slider&, Range(0,10)) = 2.5
_RampTex (&Ramp Texture&, 2D) = &white&{}
SubShader {
Tags { &RenderType&=&Opaque& &RenderType&=&Opaque& }
// ------------------------------------------------------------
// Surface shader code generated out of a CGPROGRAM block:
// ---- forward rendering base pass:
Name &FORWARD&
Tags { &LightMode& = &ForwardBase& }
// compile directives
#pragma vertex vert_surf
#pragma fragment frag_surf
#pragma multi_compile_fwdbase nodirlightmap
#include &HLSLSupport.cginc&
#include &UnityShaderVariables.cginc&
#define UNITY_PASS_FORWARDBASE
#include &UnityCG.cginc&
#include &Lighting.cginc&
#include &AutoLight.cginc&
#define INTERNAL_DATA
#define WorldReflectionVector(data,normal) data.worldRefl
#define WorldNormalVector(data,normal) normal
// Original surface shader snippet:
#line 11 &&
#ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING
//#pragma surface surf BasicDiffuse vertex:vert finalcolor:final noforwardadd
#pragma debug
float4 _EmissiveC
float4 _AmbientC
float _MySliderV
sampler2D _RampT
struct Input
float2 uv_RampT
float4 vertC
void vert(inout appdata_full v, out Input o)
o.vertColor = v.
void surf (Input IN, inout SurfaceOutput o)
pow((_EmissiveColor + _AmbientColor), _MySliderValue);
o.Albedo = c.rgb + tex2D(_RampTex, IN.uv_RampTex).
o.Alpha = c.a;
inline float4 LightingBasicDiffuse (SurfaceOutput s, fixed3 lightDir, fixed atten)
float difLight = max(0, dot (s.Normal, lightDir));
float hLambert = difLight * 0.5 + 0.5;
float3 ramp = tex2D(_RampTex, float2(hLambert)).
col.rgb = s.Albedo * _LightColor0.rgb * (ramp);
col.a = s.A
void final(Input IN, SurfaceOutput o, inout fixed4 color) {
color = color * 0.5 + 0.5;
// vertex-to-fragment interpolation data
#ifdef LIGHTMAP_OFF
struct v2f_surf {
float4 pos : SV_POSITION;
float2 pack0 : TEXCOORD0;
float4 cust_vertColor : TEXCOORD1;
fixed3 normal : TEXCOORD2;
fixed3 vlight : TEXCOORD3;
// LIGHTING_COORDS在AutoLight.cginc里定义
// 本质上就是一个#define指令
// #define LIGHTING_COORDS(idx1,idx2) float3 _LightCoord : TEXCOORD##idx1; SHADOW_COORDS(idx2)
// #define SHADOW_COORDS(idx1) float3 _ShadowCoord : TEXCOORD##idx1;
LIGHTING_COORDS(4,5)
#ifndef LIGHTMAP_OFF
struct v2f_surf {
float4 pos : SV_POSITION;
float2 pack0 : TEXCOORD0;
float4 cust_vertColor : TEXCOORD1;
float2 lmap : TEXCOORD2;
LIGHTING_COORDS(3,4)
#ifndef LIGHTMAP_OFF
float4 unity_LightmapST;
定义所需的纹理坐标
float4 _RampTex_ST;
// vertex shader
v2f_surf vert_surf (appdata_full v) {
使用自定义的vert函数填充Input结构
Input customInputD
vert (v, customInputData);
再赋值给真正所需的v2f_surf结构
o.cust_vertColor = customInputData.vertC
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
将顶点的纹理坐标转换到纹理对应坐标
o.pack0.xy = TRANSFORM_TEX(v.texcoord, _RampTex);
#ifndef LIGHTMAP_OFF
如果启用了LightMap,则计算对应的LightMap坐标
o.lmap.xy = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.
计算世界坐标系中法线的方向
SCALED_NORMAL在UnityCG.cginc里定义
// 本质上就是一个#define指令
// #define SCALED_NORMAL (v.normal * unity_Scale.w)
float3 worldN = mul((float3x3)_Object2World, SCALED_NORMAL);
如果没有开启LightMap,
// 顶点法线方向就是worldN
#ifdef LIGHTMAP_OFF
o.normal = worldN;
// SH/ambient and vertex lights
#ifdef LIGHTMAP_OFF
如果没有开启LightMap,
vertex lights就是球面调和函数的结果
球面调和函数ShadeSH9在UnityCG.cginc里定义
float3 shlight = ShadeSH9 (float4(worldN,1.0));
o.vlight =
// unity_4LightPosX0等变量在UnityShaderVariables.cginc里定义
#ifdef VERTEXLIGHT_ON
float3 worldPos = mul(_Object2World, v.vertex).
o.vlight += Shade4PointLights (
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0,
unity_LightColor[0].rgb, unity_LightColor[1].rgb, unity_LightColor[2].rgb, unity_LightColor[3].rgb,
unity_4LightAtten0, worldPos, worldN );
#endif // VERTEXLIGHT_ON
#endif // LIGHTMAP_OFF
// pass lighting information to pixel shader
// TRANSFER_VERTEX_TO_FRAGMENT在AutoLight.cginc里定义,
// 本质上就是一个#define指令
// 用于转换v2f_surf中的_LightCoord和_ShadowCoord
TRANSFER_VERTEX_TO_FRAGMENT(o);
#ifndef LIGHTMAP_OFF
sampler2D unity_L
#ifndef DIRLIGHTMAP_OFF
sampler2D unity_LightmapI
// fragment shader
fixed4 frag_surf (v2f_surf IN) : SV_Target {
// prepare and unpack data
#ifdef UNITY_COMPILER_HLSL
Input surfIN = (Input)0;
Input surfIN;
使用v2f_surf中的变量给Input中的纹理坐标进行赋值
surfIN.uv_RampTex = IN.pack0.
surfIN.vertColor = IN.cust_vertC
#ifdef UNITY_COMPILER_HLSL
SurfaceOutput o = (SurfaceOutput)0;
// 初始化SurfaceOutput结构
o.Albedo = 0.0;
o.Emission = 0.0;
o.Specular = 0.0;
o.Alpha = 0.0;
o.Gloss = 0.0;
#ifdef LIGHTMAP_OFF
o.Normal = IN.
// call surface function
调用自定义的surf函数填充SurfaceOutput结构
surf (surfIN, o);
// compute lighting & shadowing factor
// LIGHT_ATTENUATION在AutoLight.cginc里定义,
// 本质上就是一个#define指令
// 用于计算光衰减
fixed atten = LIGHT_ATTENUATION(IN);
fixed4 c = 0;
// realtime lighting: call lighting function
#ifdef LIGHTMAP_OFF
// 如果没有开启LightMap,
// 调用自定义的LightXXX函数,
// 使用填充好的SurfaceOutput等变量作为参数,
// 得到初始的像素值
c = LightingBasicDiffuse (o, _WorldSpaceLightPos0.xyz, atten);
#endif // LIGHTMAP_OFF || DIRLIGHTMAP_OFF
#ifdef LIGHTMAP_OFF
// 如果没有开启LightMap,
// 向像素叠加vertex light的光照颜色
c.rgb += o.Albedo * IN.
#endif // LIGHTMAP_OFF
// lightmaps:
#ifndef LIGHTMAP_OFF
// 计算LightMap,这部分不懂
#ifndef DIRLIGHTMAP_OFF
// directional lightmaps
fixed4 lmtex = tex2D(unity_Lightmap, IN.lmap.xy);
fixed4 lmIndTex = tex2D(unity_LightmapInd, IN.lmap.xy);
half3 lm = LightingLambert_DirLightmap(o, lmtex, lmIndTex, 0).
#else // !DIRLIGHTMAP_OFF
// single lightmap
fixed4 lmtex = tex2D(unity_Lightmap, IN.lmap.xy);
fixed3 lm = DecodeLightmap (lmtex);
#endif // !DIRLIGHTMAP_OFF
// combine lightmaps with realtime shadows
#ifdef SHADOWS_SCREEN
#if (defined(SHADER_API_GLES) || defined(SHADER_API_GLES3)) && defined(SHADER_API_MOBILE)
c.rgb += o.Albedo * min(lm, atten*2);
c.rgb += o.Albedo * max(min(lm,(atten*2)*lmtex.rgb), lm*atten);
#else // SHADOWS_SCREEN
c.rgb += o.Albedo *
#endif // SHADOWS_SCREEN
// 给Alpha通道赋值
#endif // LIGHTMAP_OFF
// 调用自定义的final函数,
// 对像素值进行最后的更改
final (surfIN, o, c);
// ---- end of surface shader generated code
FallBack &Diffuse&
其中比较重要的部分我都写了注释。一些问题回到我们一开始的那个问题:为什么我的场景里没有灯光,但物体不是全黑的呢?这一切都是Fragment Shader中一些颜色叠加计算的结果。我们仔细观察Fragment Shader中计算颜色的部分。前面说过,它使用LightingXXX对颜色值进行初始化,但后面还进行了一系列颜色叠加计算。其中,在没有使用LightMap的情况下,Unity还计算了vertex lights对颜色的影响,也就是下面这句话:
#ifdef LIGHTMAP_OFF
// 如果没有开启LightMap,
// 向像素叠加vertex light的光照颜色
c.rgb += o.Albedo * IN.
#endif // LIGHTMAP_OFF而IN.vlight是在Vertex Shader中计算的:
如果没有开启LightMap,
vertex lights就是球面调和函数的结果
球面调和函数ShadeSH9在UnityCG.cginc里定义
float3 shlight = ShadeSH9 (float4(worldN,1.0));
o.vlight =我们可以去查看ShadeSH9函数的实现:// normal should be normalized, w=1.0
half3 ShadeSH9 (half4 normal)
half3 x1, x2, x3;
// Linear + constant polynomial terms
x1.r = dot(unity_SHAr,normal);
x1.g = dot(unity_SHAg,normal);
x1.b = dot(unity_SHAb,normal);
// 4 of the quadratic polynomials
half4 vB = normal.xyzz * normal.
x2.r = dot(unity_SHBr,vB);
x2.g = dot(unity_SHBg,vB);
x2.b = dot(unity_SHBb,vB);
// Final quadratic polynomial
float vC = normal.x*normal.x - normal.y*normal.y;
x3 = unity_SHC.rgb * vC;
return x1 + x2 + x3;
} 它是一个球面调和函数,但unity_SHAr这些变量具体是什么我还不清楚。。。如果有人知道麻烦告诉我一下,不胜感激~但是,这些变量是和Unity使用了一个全局环境光(你可以在Edit-&RenderSettings-&Ambient Light中调整)有关。如果把这个环境光也调成黑色,那么场景就真的全黑了。呼呼呼,关于这些光源计算的部分就是一开始所说的那些让写shader变得很复杂的原因之一!如果你真的去看那些在UnityCG.cginc、AutoLight.cginc等文件里的关于指令的定义,可以发现Unity是根据定义的光照类型来处理不同的光照的。这部分还没有搞明白,后面会继续探究一下的!上述内容纯属研究所得,如有错误欢迎指正~
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:691544次
积分:8897
积分:8897
排名:第1010名
原创:103篇
转载:20篇
译文:21篇
评论:1317条
我叫乐乐,程序媛一枚,就读于上海交通大学软件学院,研究生,数字媒体方向。感兴趣的领域有人机交互,增强现实,游戏等等啦,我喜欢新奇好玩绚丽的东西和技术~
邮件:lelefeng1992 # gmail DOT com
PS:为防止垃圾邮件,请自行转换为正确格式哦~
阅读:25374
阅读:10165
文章:45篇
阅读:293948
(1)(1)(2)(2)(4)(2)(3)(6)(3)(8)(5)(6)(3)(6)(5)(7)(1)(2)(8)(1)(4)(5)(4)(3)(15)(2)(3)(27)(5)求助unityshadercache的含义 以及16进制编辑-中国学网-中国IT综合门户网站
> 求助unityshadercache的含义 以及16进制编辑
求助unityshadercache的含义 以及16进制编辑
转载 编辑:李强
为了帮助网友解决“求助unityshadercache的含”相关的问题,中国学网通过互联网对“求助unityshadercache的含”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:求助unityshadercache的含义 以及16进制编辑,具体解决方案如下:解决方案1:常用的计算机二进制二进制,八进制,十六位十六进制十进制二进制方法0,1,2,3,4,5,6,7,8,9每十年一个二进制0,各式18小数0,1,2,3 ,4,5,6,7每八到16个16进制0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六进制的每一个通过对数据库的索引,我们还为您准备了:答:shader旁边有个Edit按钮,点了之后另存就行了~祝你愉快,满意请采纳哦===========================================答:注意到网上的Shader代码中的最后一行FallBack "Specular"没有?该语句的意思是如果没有找到适合该Shader的硬件,那么自动匹配Unity3D自带的Specular Shader。 那么答案就很清楚了:Unity3D自带的Shader必须全面的针对几乎所有可能出现的硬件,所...===========================================答:你那个目录也找不到,要去管网下载。===========================================问:void Update () { this.renderer.material.SetFloat("Progress", 0.5f);...答:不知道这个shader是你找的还是自己写的,这个显示在面板上的 "Progress"只是一个注释,并不是这个属性的调用名字。比如你要改颜色,要调用"_Color",而不是"Main Color" 很可能写成 this.renderer.material.SetFloat("_Progress", 0.5f); 就可以了===========================================问:void Update () { this.renderer.material.SetFloat("Progress", 0.5f);...答:shader旁边有个Edit按钮,点了之后另存就行了 你的采纳是我前进的动力,还有不懂的地方,请继续“追问”。 如你还有别的问题,可另外向我求助;答题不易,互相理解,...===========================================问:void Update () { this.renderer.material.SetFloat("Progress", 0.5f);...答:/post// 看看这里吧===========================================问:unity3d 求一个shader 双面 + alpha 且物体能正常受光。。 找了两天都没...答:Shader "DoubleSide/Diffuse" { Properties { _Color ("Main Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "Queue" = "Transparent" } Material { Diffuse [_Color] Ambient (1,1,1,1) } Pass { ...===========================================问:unity3d 求一个shader 双面 + alpha 且物体能正常受光。。 找了两天都没...答:Unity自带的着色器不知道能不能修改,不过Unity官网有自带着色器的shader文件下载,你可以把它们下载下来,改好了之后当作自定义着色器使用===========================================问:希望有如下功能:能反映网格顶点的颜色(mesh.colors)、能将材质的黑颜...答:注意到网上的Shader代码中的最后一行FallBack "Specular"没有?该语句的意思是如果没有找到适合该Shader的硬件,那么自动匹配Unity3D自带的Specular Shader。 那么答案就很清楚了:Unity3D自带的Shader必须全面的针对几乎所有可能出现的硬件=========================================== 维生素C主要存在与新鲜的水果和蔬菜里,含量比较丰富的有:新鲜的大枣,柑桔类,橙子,红果,草莓,猕猴桃,酸枣,沙棘;辣椒,番茄,菠菜,菜花,苋菜,苜蓿等。 花椰菜就是菜花,有白色...===========================================你的公式是对的。 算法也没多大的出入。 所谓FOB就是成本价,要减去退税金额的。在你含了17%的增值税之后减去9%的退税,最后折算出的人民币价格当然要比你的含税价...===========================================中华。会计网校韭菜盒子回复:1.凡是取得专用发票的,题目中给出的价款就是不含税的; 2.凡是取得普通发票的,题目中给出的价款就是含税的; 3.凡是从农业生产者收购价款是...=========================================== 如果你只要护肤,一般商场的产品可以放心使用.激素产品会出现在:美白\\去皱\\去斑\\等产品中,所以,避开以上产品,不会出现问题的=========================================== 借:管理费用(制造费用、销售费用、生产成本、在建工程等)----工资贷:应付职工薪酬借:应付职工薪酬贷:其他应付款----五险一金个人部分借:应付职工薪酬贷:银行存款社保不要...===========================================在它们的上面补写了可怕的"我的遗孀。 (2)在英国国家主教堂里,国王跪下来悼念这几位英雄。 15.联系上下文,说说第①段中的"心中的海市蜃楼"的含义。(2分) 16.请根据...=========================================== 提示 应用程序无法启动 因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行sxstrace.exe工具=========================================== 皮质类固醇乳膏有地塞米松、强的松、氢化考的松,还有各种激素药膏药水(肤轻松、皮炎平、皮康霜、氯氟舒松、乐肤液、恩肤霜、肤疾宁帖膏等含有激素的外用剂)。=========================================== 不卑不亢 bù bēi bù kàng 【解释】卑:低、自卑;亢:高傲。指对人有恰当的分寸,既不低声下气,也不傲慢自大。 【出处】明·朱之瑜《答小宅生顺书十九首》:"圣贤自有...=========================================== 唐朝著名的浪漫主义大诗人李白,代表他的风格的诗歌有:七言古诗(《蜀道难》,《行路难》,《梦游天姥吟留别》,《将进酒》,《梁甫吟》等,五言古诗(《古风》59首);有句汉魏六...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助}

我要回帖

更多关于 unity 读写二进制文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信