glsl shader 雪_虚幻4渲染编程(Shader篇)【第二卷:不用虚幻4Shader管线使用自己的shader】...

MY BLOG DIRECTORY:

YivanLee:专题概述及目录​zhuanlan.zhihu.com
0f56cd0e6816849bc231b3220aee90fc.png

INTRODUCTION:

下面的球使用的是我用GlobalShader画出来的RT赋上的颜色

5b177d68ea2699f9dcb9dbfc6a10224f.gif

这个球的颜色是通过自己的shader实现的:

432a4388a279d71b6e6d1e8766e31439.png

下面就来一步一步实现使用自己的shader吧。


MAIN CONTENT:

首先我们先创建一个插件。插件其实相当于一个独立的模块,我不想再项目里做,当然再游戏模块里做也是没问题的。我们先把整个流程搞清楚了再去改引擎。

54726c7a86c27cc165bfb6711303c05c.png

首先创建个插件,名字取为ShadertestPlugin

然后打开工程里的这个插件,在插件目录下加一个Shaders文件夹

687b381c11b88e27d4f198d437a1c986.png

然后再在Shaders文件夹里加Private文件夹

ecf68208330b2fe91bae80193dc7515c.png

然后再在private里面夹里新建一个文本文档,然后把后缀名改位.usf

555dce0e9fb43fccc3f22c5db9477d55.png

在这个MyShader.usf里键入如下代码:

#include "/Engine/Public/Platform.ush"

float4 SimpleColor;
void MainVS(
 in float4 InPosition : ATTRIBUTE0,
 out float4 OutPosition : SV_POSITION
 )
{
 // screenspace position from vb
    OutPosition = InPosition;
}

void MainPS(
    out float4 OutColor : SV_Target0
    )
{
    OutColor = SimpleColor;
}

我声明了一个MyColor的颜色,这个变量后面会和c++绑定,到时候就可以让它跟cpu交互了。然后声明了一个顶点着色器和像素着色i器。

完成了这个之后,再在插件的source文件夹下加两个文件

ed8bc2518dedbdca8b2b90bda1322d1c.png

新建两个文本文档然后把后缀改位.h和.cpp就可以了。做完这些之后记得右键Uproject文件重写generate一下工程

3a61202e960f60399410b019eb23314b.png

然后重新加载vs项目就可以啦。

然后在把ShadertestPlugin.uplugin文件改一下,如下图。把加载顺序改成在引擎前加载。PostConfigInit。shader必须要在引擎加载完成前加载完才行。

60287c6f5005e049e71ad1bba6b91f1a.png

做完这个后,再在MyShader.h中打入如下代码:

a029b50bc1faba7f7f39b39632980aeb.png

然后再在MyShader.cpp中打入如下代码:

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.  

稍后我会一行行解释这些代码的意思。然后我们要修改下c#文件

07d78558d15b7581838ada3618c72223.png

完成这些后再generate一下工程,然后就可以打开项目了。我们新建如下资源:

02ba96be91877679086bc90c9214d063.png

打开BP_Shader_Test蓝图做如下设置

d85750fdfd7b5abbb780554c81829c8c.png

新建一个颜色变量,然后再beginplay函数先清空一下我们的那张ShaderTestRT渲染目标,然后把我们这个shadertestrt渲染目标给我们的DrawTestShaderRenderTarget函数。还需要注意设置input,这样actor才能接收到我们的input事件。

做完这些之后再建一个材质,把RT拖到材质里(这里只是想让我们的shader效果被看到,我们的shader已经可以运作了)

bf709d841713a007f9b615a495adeb84.png

这个操作其实已经是多pass了!!!然后把BP_Shader_Test拖到场景里,你按下1 2 3 就能看到如下效果了:

5b177d68ea2699f9dcb9dbfc6a10224f.gif

SUMMARY AND OUTLOOK:

虽然是一个简单的例子,但是终于可以在Unreal中使用自己的着色器了。

Enjoy it


NEXT:

YivanLee:虚幻4渲染编程(Shader篇)【第三卷:第二卷代码解释】​zhuanlan.zhihu.com
a0a5807d26d8f4abf4d135778168e235.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值