在shader的除錯中,將資料進行視覺化是常見策略,這裡總結一下一些關鍵資料的視覺化
uv和第二uv的視覺化:
shader "debug/uv 1" ;
struct v2f ;
v2f o;
o.pos = unityobjecttoclippos(v.vertex );
o.uv = float4( v.texcoord.xy, 0, 0 );
return o;
}half4 frag( v2f i ) : sv_target
endcg
}}}
shader "debug/uv 2" ;
struct v2f ;
v2f o;
o.pos = unityobjecttoclippos(v.vertex );
o.uv = float4( v.texcoord1.xy, 0, 0 );
return o;
}half4 frag( v2f i ) : sv_target
endcg
}}}
shader "debug/vertex color" ;
struct v2f ;
v2f o;
o.pos = unityobjecttoclippos(v.vertex );
o.color = v.color;
return o;
}fixed4 frag (v2f i) : sv_target
endcg
}}}
shader "debug/normals" ;
struct v2f ;
v2f o;
o.pos = unityobjecttoclippos(v.vertex );
o.color.xyz = v.normal * 0.5 + 0.5;
o.color.w = 1.0;
return o;
}fixed4 frag (v2f i) : sv_target
endcg
}}}
shader "debug/tangents" ;
struct v2f ;
v2f o;
o.pos = unityobjecttoclippos(v.vertex );
o.color = v.tangent * 0.5 + 0.5;
return o;
}fixed4 frag (v2f i) : sv_target
endcg
}}}
shader "debug/bitangents"
cgprogram
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
// vertex input: position, normal, tangent
float4 vertex : position;
float3 normal : normal;
float4 tangent : tangent;
};struct v2f ;
v2f o;
o.pos = unityobjecttoclippos(v.vertex );
// calculate bitangent
float3 bitangent = cross( v.normal, v.tangent.xyz ) * v.tangent.w;
o.color.xyz = bitangent * 0.5 + 0.5;
o.color.w = 1.0;
return o;
}fixed4 frag (v2f i) : sv_target
endcg
}}}
unity shader深度紋理、法線紋理的使用 unity的一些坑
指5.6版本 1.材質球a用b shader,引用了貼圖m。在a換成c shader,引用貼圖n之後,你會發現a居然直接引用了m跟n!編輯器神器的記憶功能會記住你材質球上的一些操作,從而導致你的assetbundle無比巨大。2.新建粒子會指定預設材質球,而預設材質球的shader是standerd...
Unity的一些筆試題
在網路上搜到的一些unity筆試題,下面解答部分為本人重新編寫的,希望幫到大家!1.請描述遊戲動畫有哪幾種,以及其原理。主要有關節動畫 單一網格模型動畫 關鍵幀動畫 骨骼動畫。關節動畫把角色分成若干獨立部分,乙個部分對應乙個網格模型,部分的動畫連線成乙個整體的動畫,角色比較靈活quake2中使用了這...
gdb除錯的一些技巧
雖然list已經很方便了,但還是不盡人意.如果能夠在執行的同時顯示 就好了,答案是肯定的.使用如下命令啟動gdb gdb tui main或者在啟動gdb後,輸入命令focus或layout linux下,程式出現崩潰都會在可執行檔案的目錄生成core檔案,此時可以使用core檔案檢視崩潰時的呼叫堆...