Nicht ganz. Wenn man ein Material einem View zuweist und keine speziellen Flags gesetzt sind, bekommen alle Modelle in der Szene den Shader, wenn der View gerendert wird. (ungut! Du willst verschiedene Materialien haben. Also: camera.material nicht setzen) Der View der die Depthmap rendert, muss jedoch weiterhin ein Material besitzen.
Alle Effekte, die du zur Zeit zugewiesen hast, haben keine Ahnung, dass du eine Shadowmap hast etc. Deswegen musst du die *.fx Datei von jedem Material umschreiben, so dass dieser Faktor auch noch mit in die Berechnung der Farbe beiträgt.
Kleines Beispiel:
Der pixelshader von deinem normalmapping shader sieht so aus:
float4 nmPS(VS_OUT IN):COLOR{
float3 normals = tex2D(normalMap, IN.tex)*2-1;
float diffuse = dot(normals, normalize(IN.light));
return diffuse;
}
dann musst du die wichtigen Teile von dem Shadowmapping-Shader auch noch dazupacken. z.B. (wird eher nen paar Zeilen mehr sein):
float4 nmPS(VS_OUT IN):COLOR{
float3 normals = tex2D(normalMap, IN.tex)*2-1;
float diffuse = dot(normals, normalize(IN.light));
float shadow = {Projections Zeug hier rein};
return diffuse*shadow;
}
Eventuell musst du noch den Vertexshader, bei den Definitionen und eventuell das Materialevent umändern. Halt alle Funktionen von dem alten Material ins neue Übernehmen.