这在PC上运行良好,但我使用的是Mac,它会弹出警告
没有子着色器可以在这个显卡上运行
对于着色器,这会显示粉红色的错误着色器。
Shader "Custom/wireframeShaderWithLambert" {
Properties {
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
_Color ("Line Color", Color) = (1,1,1,1)
_MainTex ("Main Texture", 2D) = "white" {}
_Thickness ("Thickness", Float) = 1
}
SubShader {
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_MainTex;
};
sampler2D _MainTex;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
}
ENDCG
Pass
{
Tags { "RenderType"="Opaque" "Queue"="Geometry" }
Blend SrcAlpha OneMinusSrcAlpha
Cull Off
LOD 200
CGPROGRAM
#pragma target 5.0
#include "UnityCG.cginc"
#pragma vertex vert
#pragma fragment frag
#pragma geometry geom
struct vertToGeom
{
float4 pos : POSITION; // vertex position
float2 uv : TEXCOORD0; // vertex uv coordinate
};
// Geometry to UCLAGL_fragment
struct geomToFrag
{
float4 pos : POSITION; // fragment position
float2 uv : TEXCOORD0; // fragment uv coordinate
float3 dist : TEXCOORD1; // distance to each edge of the triangle
};
// PARAMETERS //
//float4 _Texture_ST; // For the Main Tex UV transform
float _Thickness = 1; // Thickness of the wireframe line rendering
float4 _Color = {1,1,1,1}; // Color of the line
float4 _MainTex_ST; // For the Main Tex UV transform
sampler2D _MainTex; // Texture used for the line
// Vertex Shader
vertToGeom vertShader(appdata_base v)
{
//Random shader code
return output;
}
// Geometry Shader
[maxvertexcount(3)]
void geomShader(triangle UCLAGL_v2g p[3], inout TriangleStream<UCLAGL_g2f> triStream)
{
//Random shader code
}
ENDCG
}
}
}
我不知道为什么会这样,我唯一能想到的是也许Cg不能在mac上工作?
另外,我似乎找不到使它成为GLSL的方法。
这并不是说Cg不能在Mac上工作,而是超过你的目标着色器版本(5.0)对于你的Mac图形卡来说太高了。
通常,你应该总是写一个子着色器目标2.0,这是默认的着色器。当然,效果不会像高级版本那么好,有些功能可能不可用,所以你必须适应它。
然后,添加更多的子着色器目标更高的版本,因为你需要它,为一个更好的质量版本。
有关着色器目标和渲染平台的更多信息,请参阅Unity3D文档。
Shader目标概述:
默认情况下,Unity将shader编译成shader model 2.0等价的。使用#pragma target可以将着色器编译成其他能力级别。目前支持以下目标:
#pragma target 2.0
(默认)-大致着色器模型2.0
- Shader Model 2.0在Direct3D 9。
- 有限的算术量&结构说明;无顶点纹理采样;在片段着色器中没有衍生。
#pragma target 3.0
-编译为着色器模型3.0:
- Shader Model 3.0 on Direct3D 9.
#pragma target 4.0
-编译DX10着色器模型4.0。
- 此目标目前仅支持DirectX 11和XboxOne/PS4平台。
#pragma target 5.0
-编译成DX11着色器模型5.0。
- 此目标目前仅支持DirectX 11和XboxOne/PS4平台。