UNity的一些坑

xiaoxiao2021-02-27  125

_TANGENT_SPACE_ROTATION这个在ios上,mesh的缩放不对的情况下会有问题,所以尽量别用这个。

float sceneZ = LinearEyeDepth (tex2Dproj(_LastCameraDepthTexture, UNITY_PROJ_COORD(i.screenPos)).r); float objectZ = i.screenPos.z; sceneZ有时比objectZ要大,所以通过加abs fixed depthFactor = abs(sceneZ - objectZ) * _DepthFactor;// ;

有时候,向量点乘的积小于0,就要加上abs,以免有的时候看不到高光 half3 lightDir = normalize(_lightDir.xyz); half diffuseFactor = abs(dot(nNormal, lightDir)); //return fixed4(albedo , alpha); //half reflectiveFactor = abs(dot(worldView, reflect(lightDir, nNormal))); half3 h = normalize(lightDir + worldView); float nh = abs(dot(nNormal, h));

unity5.4.4版本,灯光从一个scene拷贝到另一个scene,lightmap会失效。

rgb通道会失真,会互相渗透,比如92.3就会变成93,而阿尔法通道不会失真。如果想要不失真,就放在阿尔法通道中。

Material doesn’t have a texture property ‘_MainTex’ unityEngine.material:set_mainTextureOffset(Vector2) Zlib.UVAni:update()这个uVAni脚本,改uv时可以加一句if material.hasProperty(XX)这样会避免一些奇怪的问题。

在project窗口搜索的地方输入一个字符串后,就会出现request error UnityEditor.AsyncHTTPClient:Done这个错误,游戏运行几秒钟就会自动终止,将搜索的字符串删除就没有这个错误了。

Too many texture interpolators would be used for ForwardBase pass。当用worldRefl时,数据结构里要写 INTERNAL_DATA,这个宏编译后代码里可以看到,会定义3个float类型变量,所以,如果其他变量太多,使数据结构里的值太多,会出现上述错误。可以尝试通过改变数据结构里的变量顺序减少占用的float类型个数。实在不行,只有减少数据结构里的变量。

今天写了个测试顶点坐标的shader,建了个材质球,放在一个cube(unity自带的)上是好的,当我在max里建了一个正方体,导入后,用相同的材质,两个显示都有问题了。而我不用自己创建的,用两个unity自带的cube,也会出现这个问题。将其中一个隐藏或者用两个材质球就不会出现这个问题了。感觉非常诡异。shader代码如下:

Shader "Unlit/TestVertexPosition" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Cull Back Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; float4 tangent : TANGENT; float4 normal : NORMAL; }; struct v2f { float2 uv : TEXCOORD0; float4 pos : SV_POSITION; float4 vertexCol : TEXCOORD3; float4 tangent : TEXCOORD1; float4 normal : TEXCOORD2; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; UNITY_INITIALIZE_OUTPUT(v2f, o); //UnityInitializeOutput(v2f, o); o.vertexCol = v.vertex; o.uv = v.uv; o.tangent = v.tangent; o.normal = v.normal * 0.5 + 0.5; float4 temp = v.vertex; //o.pos = UnityObjectToClipPos(temp); o.pos = mul(UNITY_MATRIX_MVP, temp); return o; } fixed4 frag (v2f i) : SV_Target { return fixed4(i.vertexCol.xyz, 1); } ENDCG } } }

unity4.4版本,烘焙后,再创建一个物体,shader里输出的颜色是_LightColor0.rgb,输出为黑色; 查了半天,发现没有烘焙。

用shader.setfloat("_DisturbMapFactor")设置shader参数不起作用,试了半天 换个参数的名字就好了

转载请注明原文地址: https://www.6miu.com/read-13861.html

最新回复(0)