- Home /
Not enough interpolaters(with shader model 4.0)
I've been developing some shaders(well, actually a program that can modify shaders into what you see in the picture below) that could melt away some parts(in real-time) in the scene: The logic behind the shader is that it generates some value and if the value is lower than some threshold, the pixel is clipped, otherwise the shader outputs the original color of the original shader(which are unity built-in shaders).
The problem is, sometime's the shader will need a few more texture interpolaters for the calculations for the melting. And my calculations actually only requires one texture interpolater. But for some shaders such as "Reflective/Parallax Diffuse", even one more is too much. By searching on the internet I found out that shader model 4.0 shaders can support 16 interpolaters, and in the compiled source code of Reflective/Parallax Diffuse(which I got from using #pragma debug): Code:
#ifdef LIGHTMAP_OFF
struct v2f_surf {
float4 pos : SV_POSITION;
float4 pack0 : TEXCOORD0;
float3 viewDir : TEXCOORD1;
fixed4 TtoW0 : TEXCOORD2;
fixed4 TtoW1 : TEXCOORD3;
fixed4 TtoW2 : TEXCOORD4;
fixed3 lightDir : TEXCOORD5;
fixed3 vlight : TEXCOORD6;
LIGHTING_COORDS(7,8)
};
#endif
#ifndef LIGHTMAP_OFF
struct v2f_surf {
float4 pos : SV_POSITION;
float4 pack0 : TEXCOORD0;
float3 viewDir : TEXCOORD1;
fixed4 TtoW0 : TEXCOORD2;
fixed4 TtoW1 : TEXCOORD3;
fixed4 TtoW2 : TEXCOORD4;
float2 lmap : TEXCOORD5;
LIGHTING_COORDS(6,7)
};
which means the shader uses at most 9 interpolaters before my modifications were applied, I only need the worldPos(world space position of the fragment), so in the surface shader I add "float3 worldPos" to the Input struct, so the modified shader should only need 10 interpolaters(which means I should be fine even with shader model 3.0), but even if I add "#pragma target 4.0" to the modified shader(which should allow 16 interpolaters), unity still tells me "too many interpolaters would be used", well my graphics card is ati HD 7770(which should support up to shader model 5.0) so I don't understand what's wrong here. any ideas?
Your answer
Follow this Question
Related Questions
Old TV Set post effect 2 Answers
Vertex Colors as Splat Map for Terrain Texture colors blown out 1 Answer
Tracing in Unity3D 2 Answers
Collision issues SOLVED 2 Answers
Dematerialisation Effect 2 Answers