Unity 一些用於除錯的Shader總結

2021-10-09 08:41:28 字數 2025 閱讀 5558

在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檔案檢視崩潰時的呼叫堆...