# FaceSDF **Repository Path**: KARSKOW/faceSDF ## Basic Information - **Project Name**: FaceSDF - **Description**: 以着色器研究为目的建立的Godot动漫阴影着色器。 - **Primary Language**: Unknown - **License**: CC0-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-07-12 - **Last Updated**: 2026-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

FACE-SDF

![Static Badge](https://img.shields.io/badge/Godot_Shader-blue?logo=godotengine&logoColor=white)
## 介绍 动漫脸部阴影着色器,使用参考案例/教程翻译至Godot着色器。
尝试将Unity的着色器代码/可视化着色器翻译至Godot着色器。
参考了一些示例,并且将可能遇到的问题进行改进。
1. [Youtube LINK 1 ->](https://youtu.be/WR_SP4LmOlw?si=lfh9Zi-sJM4t0VjC)
2. [Youtube LINK 2 ->](https://youtu.be/LKR1ITdOeKM?si=Nh6wvRhcAA4_7p6M) ## 问题 1.点光的阴影方向可能不太准确,但某些场景下也有可能是准确的。需要反馈。
2.阴影的过渡速度稍快。
3.目前没有应用于生产开发的案例,请谨慎使用。
4.目前仅可视化着色器为最新修改,目前的着色器代码还无法使用。 ## 修改 1.转换了3D空间使其兼容。
2.颜色着色器方面进行了细微修改。
3.新增可平滑阴影边缘的功能。 ## 使用提示 1.需要一个SDF图片和模型的颜色图片。
2.需要一个专门处理脸部的材质槽,并且带UV。
3.为了消除阴影边缘的锯齿感,可以在导入时设置以下选项: ``` 压缩 --> 模式 = lossless Mipmap --> 生成 = false(关闭) 检测3D --> 压缩至 = Disabled ```
4.为了阴影精准投射,需要加入以下代码: ```gdscript func physics_process(delta): #"body_mesh"是人体的网格,即"MeshInstance3D" #"self"用于获取本身局部的坐标,即"CharactorBody3D" # get_surface_override_material(脸部着色器材质槽位置编号: int) body_mesh.get_surface_override_material(0).set("shader_parameter/forward", abs(Vector3.FORWARD * self.transform.origin.normalized())) body_mesh.get_surface_override_material(0).set("shader_parameter/right", -abs(Vector3.RIGHT * self.transform.origin.normalized())) # 建议添加Marker3D以辅助对准向量。 ```
5.如果出现阴影从相反的方向投射,请直接用减法反转,例如: ``` -abs(Vector3.RIGHT * self.transform.origin.normalized()) ``` ## 着色器参数
`Base Texture` 彩色底图,即模型原来绘画的颜色
`Color` 颜色,混合彩色底图
`Shadow` 阴影颜色
`Forward` 向前向量,用于对准向前坐标,通常是 z = 1.0。
`Right` 向右向量,用于对准向右坐标,通常是 x = 1.0。
`SDF` SDF贴图,必须由自己在模型绘画并生成。
`Shadow Smooth` 平滑脸部阴影边缘。

提示:`Forward` 和 `Right`通常无需手动设置,导出这两者的变量是为了可以在脚本上设置向前和向右的坐标,参见 “使用提示” 第四条。