We are working on an anatomical application in Unity, where the user can dissect a model of a human hand. We are using this script for a shader to select a structure which will be visible through the hand (so you can see its location even when its at the back/inside the hand)
// Marmoset Skyshop
// Copyright 2013 Marmoset LLC
// http://marmoset.co
Shader "Marmoset/Bumped Specular Xray" {
Properties {
_Color ("Diffuse Color", Color) = (1,1,1,1)
_ColorVisible04("Color Visible", Color) = (1,0,0,0.3)
_SpecColor ("Specular Color", Color) = (1,1,1,1)
_SpecInt ("Specular Intensity", Float) = 1.0
_Shininess ("Specular Sharpness", Range(2.0,8.0)) = 4.0
_Fresnel ("Fresnel Strength", Range(0.0,1.0)) = 0.0
_MainTex ("Diffuse(RGB) Alpha(A)", 2D) = "white" {}
_SpecTex ("Specular(RGB) Gloss(A)", 2D) = "white" {}
_BumpMap ("Normalmap", 2D) = "bump" {}
//slots for custom lighting cubemaps
//_DiffCubeIBL ("Custom Diffuse Cube", Cube) = "black" {}
}
SubShader {
Tags {
"Queue"="Geometry"
"RenderType"="Opaque"
}
LOD 400
//diffuse LOD 200
//diffuse-spec LOD 250
//bumped-diffuse, spec 350
//bumped-spec 400
Pass{
Name "BASE"
Cull Off Lighting Off ZWrite Off ZTest Greater
Blend SrcAlpha OneMinusSrcAlpha
SetTexture[_MainTex]{
constantColor[_ColorVisible04]
Combine constant
}
}
//mac stuff
CGPROGRAM
#ifdef SHADER_API_OPENGL
#pragma glsl
#endif
#pragma target 3.0
#pragma exclude_renderers gles gles3 metal d3d11_9x flash
#pragma surface MarmosetSurf MarmosetDirect vertex:MarmosetVert fullforwardshadows
#pragma multi_compile MARMO_BOX_PROJECTION_OFF MARMO_BOX_PROJECTION_ON
#if MARMO_BOX_PROJECTION_ON
#define MARMO_BOX_PROJECTION
#endif
#pragma multi_compile MARMO_SKY_BLEND_OFF MARMO_SKY_BLEND_ON
#if MARMO_SKY_BLEND_ON
#define MARMO_SKY_BLEND
#endif
#define MARMO_HQ
#define MARMO_SKY_ROTATION
#define MARMO_DIFFUSE_IBL
#define MARMO_SPECULAR_IBL
#define MARMO_DIFFUSE_DIRECT
#define MARMO_SPECULAR_DIRECT
#define MARMO_NORMALMAP
#define MARMO_MIP_GLOSS
//#define MARMO_GLOW
//#define MARMO_PREMULT_ALPHA
//#define MARMO_OCCLUSION
//#define MARMO_VERTEX_OCCLUSION
//#define MARMO_VERTEX_COLOR
//#define MARMO_SPECULAR_FILTER
#include "MarmosetInput.cginc"
#include "MarmosetCore.cginc"
#include "MarmosetDirect.cginc"
#include "MarmosetSurf.cginc"
ENDCG
}
FallBack "Marmoset/Specular IBL"
}
To make this even more clear, we want to add a black outlining at the selected structure. This image should give a better idea: black outlining
We tried to adjust the script, however, the black outlining isnt applied on the parts of the structure behind other structures.
Our goal: the selected structure has a black outlining for both the visible parts and hidden parts (so the hidden parts will be shown anyways like this shader colors the hidden parts), the hidden parts will have a specific color based on the anatomical type ( like a nerve = yellow), the visible parts will show their diffuse/normal/specular maps.
This shader script works for everything named above, but the outlining part. Does anybody know how we must adjust the script? Other suggestions are welcome too!