INTELNAL_DATA and WorldReflectionVector function problem

hello
this is an unity’s surface shader in surface document:

Shader “Example/WorldRefl Normalmap” {
Properties {
_MainTex (“Texture”, 2D) = “white” {}
_BumpMap (“Bumpmap”, 2D) = “bump” {}
_Cube (“Cubemap”, CUBE) = “” {}
}
SubShader {
Tags { “RenderType” = “Opaque” }
CGPROGRAM
#pragma surface surf Lambert
struct Input {
float2 uv_MainTex;
float2 uv_BumpMap;
float3 worldRefl;
INTERNAL_DATA // what is this? where is it defined?
};
sampler2D _MainTex;
sampler2D _BumpMap;
samplerCUBE _Cube;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb * 0.5;
o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
o.Emission = texCUBE (_Cube, WorldReflectionVector (IN, o.Normal)).rgb;
}
ENDCG
}
Fallback “Diffuse”
}

The problem is INTERNAL_DATA ? where is it defined? and WorldReflectionVector (IN, o.Normal) , where is defined this function?

INTERNAL_DATA is defined by the surface shader translator. You can see its value by using adding #pragma debug and then checking out the generated Cg by clicking “Open Compiled Shader” in the Inspector. I think you’ll find that that’s where WorldReflectionVector() is defined.

thanks very much