我们正在开发 Unity 中的解剖应用程序,用户可以在其中解剖人手模型。我们将这个脚本用于着色器来选择一个可以通过手看到的结构(这样即使它在手的背面/内部,您也可以看到它的位置)
// 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"
}
为了更清楚地说明这一点,我们想在选定的结构上添加黑色轮廓。这张图片应该给出一个更好的主意: 黑色轮廓
我们尝试调整脚本,但是黑色轮廓并未应用于其他结构后面的结构部分。
我们的目标:所选结构的可见部分和隐藏部分都有黑色轮廓(因此隐藏部分将无论如何都会显示,就像这个着色器为隐藏部分着色一样),隐藏部分将具有基于解剖类型的特定颜色(像神经 = 黄色),可见部分将显示它们的漫反射/法线/镜面反射贴图。
此着色器脚本适用于上述所有内容,但大纲部分除外。有人知道我们必须如何调整脚本吗?也欢迎其他建议!