public static Material[] GetMatsFrom(GraphicRequest req, Texture2D[] inputTextureArray, Texture2D[] inputMaskArray) { Material[] matArray = new Material[inputTextureArray.Length]; for (int i = 0; i < inputTextureArray.Length; i++) { if (inputTextureArray[i] != null) { Texture2D mask; if (inputMaskArray[i] != null) { mask = inputMaskArray[i]; } else { mask = HairMasker.GetDefaultMask(inputTextureArray[i].width, inputTextureArray[i].height); } MaterialRequest tempMatReq = default(MaterialRequest); tempMatReq.mainTex = inputTextureArray[i]; tempMatReq.shader = req.shader; tempMatReq.color = req.color; tempMatReq.colorTwo = req.colorTwo; tempMatReq.maskTex = mask; tempMatReq.shaderParameters = req.shaderParameters; matArray[i] = MaterialPool.MatFrom(tempMatReq); } } return(matArray); }
public static Material[] ProcessGradientMats(GraphicRequest req, Texture2D[] inputTextures, Texture2D[] inputTextureMasks, Texture2D gradientMask, Color gradientColor) { //bake textures with only HairColor2 applied via original texture masks Color temp = req.color; req.color = Color.white; Material[] firstPassMats = GetMatsFrom(req, inputTextures, inputTextureMasks); for (int i = 0; i < inputTextures.Length; i++) { inputTextures[i] = BakeTexture(inputTextures[i], firstPassMats[i]); } //prepare combined gradient masks for (int i = 0; i < inputTextures.Length; i++) { inputTextureMasks[i] = HairMasker.CombineWithGradientMask(inputTextureMasks[i], gradientMask); } //use combined masks on baked textures with original colors req.color = temp; req.colorTwo = gradientColor; return(GetMatsFrom(req, inputTextures, inputTextureMasks)); }