Yes it possible to use service account across projects to deploy Cloud Function.
Please follow below mentioned link to grant the necessary permissions.
https://cloud.google.com/functions/docs/securing/function-identity#gcloud_2
If the service account and the function are in different projects, from the project where the service account is located:
Configure the service account to work across projects.
Grant the Service Account Token Creator role (roles/iam.serviceAccountTokenCreator) to both of these Google-managed service accounts:
App Engine default service account (PROJECT_ID@appspot.gserviceaccount.com)
Cloud Functions Service Agent (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)
These Google accounts manage cross-project access for your service account.
Grant the service account access to the resource. The method for doing this depends on the resource type.
Connect the service account with your function. You can do this either at deployment time or by updating a previously deployed function.
Using the above guidance we are still not able to view the new SA across the projects but able to deploy the same via CLI.
Sample CLI is as below
gcloud functions deploy FUNCTION_NAME
--trigger-topic TOPIC_NAME --region REGION_NAME --runtime RUNTIME --entry-point ENTRY_POINT --service-account SERVICE_ACCOUNT_EMAIL
Please note: While deploying the CF using CLI, you need to be in working directory where main.py and other files are located.