如何在Unity 3D中编写一个自定义着色器,用于点亮特定像素或像素组?

时间:2015-11-03 15:04:12

标签: unity3d graphics shader hlsl

我正在Unity中制作一个FPS游戏,我希望当玩家在他的环境中拍摄时,环境会变亮。 所以说我有一棵树。首先,它将完全是黑色或灰色,但如果我在某处拍摄,我会看到一些绿色。 要完成此功能,我使用光线投影来获得影响点,因此我可以访问播放器正在拍摄的点的任何渲染器。 我想下一步是编写一个自定义着色器来点亮拍摄的确切像素。 您是否知道如何编写此着色器或其他方式来实现此效果?

此致

1 个答案:

答案 0 :(得分:0)

如果您使用延迟渲染:Deferred decals

如果使用正向渲染:Projectors

如果您需要一些更高级的“类似绘画”功能,请结合使用渲染纹理和RaycastHit.textureCoord,以在射线相交点获得确切的UV坐标。您可以使用Graphics.Blit绘制东西以渲染纹理。请查看this github project,以获取有关如何执行此操作的灵感。