1

我们正在开发 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"
}

为了更清楚地说明这一点,我们想在选定的结构上添加黑色轮廓。这张图片应该给出一个更好的主意: 黑色轮廓

我们尝试调整脚本,但是黑色轮廓并未应用于其他结构后面的结构部分。

我们的目标:所选结构的可见部分和隐藏部分都有黑色轮廓(因此隐藏部分将无论如何都会显示,就像这个着色器为隐藏部分着色一样),隐藏部分将具有基于解剖类型的特定颜色(像神经 = 黄色),可见部分将显示它们的漫反射/法线/镜面反射贴图。

此着色器脚本适用于上述所有内容,但大纲部分除外。有人知道我们必须如何调整脚本吗?也欢迎其他建议!

4

0 回答 0