自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 我要搬家啦!!!

 感觉这里写专栏看的人比较少,所以我的专栏文章会在知乎上写,平时在这里会写一些随笔我的知乎传送门:虚幻4渲染编程知乎专栏我的知乎专栏目录:https://zhuanlan.zhihu.com/p/36675543我的UnrealShaderToy专栏:https://zhuanlan.zhihu.com/c_188321773...

2018-05-12 19:14:00 2070

原创 技术美术图形交流群

如果你对虚幻4底层图形感兴趣,欢迎加入技术美术图形交流群大家一起交流技术。加入前我希望你是:【1】对渲染管线图形学有一定了解。【2】对虚幻4或者unity有一定了解。至少两年经验。如果您是初学者,可能这里不太适合您。群号是:192946459...

2018-03-15 10:06:10 2359

原创 VC++编程Lib和Dll文件的生成和使用

Lib文件的生成和使用lib是静态链接库,生成和使用方法都比较简单。首先建一个空工程然后打开项目属性,把它设置为StaticLibary然后就可以向里面加入代码了,我创建一个LIBTest类.h文件.cpp文件然后右键Build它就可以了,在输出路径下会生成对应的lib文件这个路径当然也是可以修改的。不过对于静态库来说关系不是很大。现在有了这个lib以后就可以使用它了。新建一个c++空项目,把刚才生成的Lib复制到新工程下,同时也要把.h文件一

2020-11-07 16:28:37 20

原创 C++二进制文件读写,以及数据的拼合与还原

要把数据先合并到一个大的buffer里,然后把这个buffer写成二进制文件,然后重新读取这个二进制文件,然后把数据分配还原代码如下:#include <iostream>#include <fstream>#include <vector>using namespace std;int main(){ //Origin Objects vector<int> srcData_01 = { 0, 1, 2, 3, 4, 5 , 6

2020-10-01 16:24:05 43

原创 通过FGenericRHIGPUFence来减少从GPU回读数据的阻塞

Unreal提供了一个小工具类来帮助GPU回读数据

2019-11-01 20:44:58 262

原创 Unity shader flow mapping

Shader "Custom/Flow Map" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _FlowMap ("Flow Map", 2D) = "grey" {} _Speed ("Speed", Range(-1, 1)) = 0.2 } Sub...

2019-09-02 17:26:37 990

原创 Maya python scripting(1)

我最近在重新学习Maya动画,在学习的时候我发现绑定需要脚本,所以我又重新开始复习maya脚本。总得来说maya的脚本完全没有难度,就是那些接口要记忆一下。我非常讨厌记代码,所以我把学习到的代码样本记在博客里,以后要用的时候直接copy【1】Create window in mayaimport maya.cmds as cmdsdef create_window(): ...

2019-08-07 09:47:38 304

原创 Unreal Engine4 使用c++创建贴图

一般我们将贴图资源导入引擎的时候,引擎会自己抽取贴图文件的数据然后创建一个UTexture的Object合一个Uasset。但是有时候我们想自己写工具的话需要自己实现这套创建机制。可以在引擎的UTextureFactory找到我们导入引擎时的逻辑代码。可以看到不同的图片格式,不同的像素深度创建的像素格式合贴图格式都不一样。要使用代码创建贴图资源我们第一部是先指定一个创建贴图的地方...

2019-02-16 18:03:11 1258 1

原创 虚幻4 源码版LightMass Build Failed

最近用源码版引擎烘焙光照,发现不管怎么设置都会出Swarm failed to Kick off的报错,所以查阅了下资料发现,引擎Build的时候不会帮我Build LightMass,所以需要重新用VS把LightMass在DevelopmentEditor模式下重新Build一下就好了 ...

2019-01-21 01:12:34 1131

原创 在虚幻4项目种建立多个模块

模块化编程有一定好处,是否给自己的项目分模块,具体还是看个人怎么设计。虚幻4使用多模块,可以加快编译速度,减少耦合。UE种我们需要创建模块分两种,一种是项目模块,一种是插件模块。一:【项目模块】当我们创建一个项目后,可以在source下看到如下三个文件项目里只有一个模块如果想新建一个模块,我们需要:【1】新建一个模块的文件夹【2】新建对应模块的.Build.cs...

2018-11-27 08:44:39 735 1

原创 Unity Billboard shader

billboard在游戏里挺常用的,下面是个unity的billboard shader。在顶点着色器中把顶点旋转到合视角平行首先在tag中加上一句修饰防止billboard被batch掉,这里非常坑,其实billboard算法挺简单的Tags {"DisableBatching" = "True" }然后是顶点着色器的变换//billboard construct floa...

2018-11-23 16:29:46 1477 1

转载 C++ Class和typename的区别

先来上段代码这是啥,为啥前面会有个typename。于是去谷歌了一下http://feihu.me/blog/2014/the-origin-and-usage-of-typename/对于用于模板定义的依赖于模板参数的名称,只有在实例化的参数中存在这个类型名,或者这个名称前使用了typename关键字来修饰,编译器才会将该名称当成是类型。除了以上这两种情况,绝不会被当成是类型。因...

2018-10-21 16:24:01 398

原创 虚幻4的Shader宏

虚幻4的shader宏简直丧心病狂,上图感受一下如何正确理解它们是怎么嵌套的呢,下面我敲了个极短的控制台示例#include &lt;iostream&gt;#include &lt;string&gt;using namespace std;class Shader{public: void ShowShader() { cout &lt;&lt; shader...

2018-10-19 15:02:01 790

原创 虚幻4程序动态创建package资源并且导出资源

直接上代码吧。void UTestShaderBlueprintLibrary::ExportTexture(UTexture2D* TextureToBeExpot){ //TextureToBeExpot-&gt;CompressionSettings = TextureCompressionSettings::TC_VectorDisplacementmap; //Textur...

2018-10-10 22:05:12 1804

原创 虚幻4资源批量导出

我们自己写点程序就可以了先写个UI然后加个按钮,按钮来调用下面这个函数。然后调用下面这个接口即可

2018-10-10 21:59:02 2647

原创 UnityShader 模板

有时候写shader经常忘记unity的各种矩阵的名字。我这里记录了一下一个比较全的shader,unityshaderlab各种名字都齐全了。Shader "S_MyShaderTemplate"{ Properties { _BaseColorMap ("BaseColor", 2D) = "white" {} //_NormalMap ("Normal", 2D) = "...

2018-09-30 21:32:02 446

原创 基于GPU的图像处理输出bmp格式的图再转换为tga精度损失问题。

我最近在搞图像处理,我的步骤是(1)先把要处理的图片读进GPU然后用CS处理(2)把CS的输出存到磁盘,此时数据是未压缩的BMP格式(3)美术同事可能想要其他格式的图片如tga,所以用ps的批处理把图片转为tga或者其他格式。下面就来看看这个过程的精度损失原始输出值是0.54输出之后到bmp中可以看到值是对的然后再转成tga可以看到值是在0.54之间浮动...

2018-09-28 01:26:26 471

原创 像素读写进一个uint32中

这是computeshader中的写入下面是c++的读写第一张截图是写入,第二张是读取。Enjoy it

2018-09-22 17:44:41 225

原创 虚幻4 DynamicTexture Write Array data to Texture2D

在游戏运行时将数组数据写入Texture中。我的环境是4.19使用下面的代码就可以直接把数组写入Texture2D然后显示出来了效果如下:Runtime的时候就动态写数据到Texture2D里了,需要注意的是,执行只后,对应的Texture资源是无法还原的了,永久被修改掉了Enjoy It对于渲染线程,使用Lock和Unlock也能轻松读写Texture的数据...

2018-09-22 16:17:43 665

原创 虚幻通过程序跳转到资源在资源浏览器中的位置

按下按钮后,ContentBrower将自动跳转到资源所在位置Enjoy It

2018-09-17 20:57:52 394

原创 虚幻4批量加载资源,加载指定目录或指定类的资源

虚幻4加载大批资源的方式有几个ObjectLibray和AssetRegistry。下面的代码直接粘贴进代码,包含好头文件就能起效(引擎版本4.19)https://docs.unrealengine.com/en-us/Programming/Assets/Registry FAssetRegistryModule&amp; AssetRegistryModule = FMod...

2018-09-15 15:43:12 2451 1

原创 为虚幻4配置vitual studio编辑器界面

工欲善其事必先利其器难道就没人觉得这个配置显示框太小了么,根本不知道后面是啥这么多配置万一弄错了咋办!在工具栏的这个空白位置右键打开Customize然后找到如下设置把宽度设置为200终于解决了长久以来的显示不全问题Enjoy it!!!...

2018-09-03 22:28:54 656

原创 打光小笔记

游戏里一般用3 point light来打光,分为三部分 full light,key light  ,back light主光背光主反光副反光也可以把光源信息烘焙到SH里。补光的能量叠加总和不要超过主光最高亮部的能量的二分之一,上面就有个错误的效果主反光比较难调,下面是正确的主反光效果(请忽略粗糙度的不同):...

2018-08-28 20:27:35 444

原创 常见图形问题迷惑解答

(1)什么是Gamma space 和 Linear spacehttp://www.kinematicsoup.com/news/2016/6/15/gamma-and-linear-space-what-they-are-how-they-differ(2)sRGB,Adobe RGB,LAB,CMYK颜色的区别https://www.zhihu.com/question/2060...

2018-08-15 17:54:00 477

原创 虚幻4把模型拖入场景后,模型是怎么被渲染出来的流程分析

在我们把模型拖入虚幻4的视口后场景编辑器会调用RendererScene的AddPrimitive函数然后在这个函数种会调用Scene-&gt;AddPrimitiveSceneInfo_RenderThread(RHICmdList, PrimitiveSceneInfo);然后会调用FPrimitiveSceneInfo的AddToScene然后会调用Primi...

2018-08-14 17:07:15 3575

原创 Material Capture制作玉石效果

最后的效果:非常节省的算法。下面记录一下Unity的写法,unity版本搞了很久没搞出来,结果最后发现是矩阵顺序乘错了(对unity还是不太熟啊),最后请教了CG-bull大佬,赶快记下小笔记,别忘了!Shader "Unlit/S_MaterialCapture"{ Properties { _MatCapTexure ("MaterialCaptureT...

2018-08-04 13:23:38 1918

原创 C++控制台写光线追踪渲染器

最近在跟着朋友学光线追踪,看着纯控制台居然能写出光线追踪渲染器,感觉非常神奇。先上效果吧:下面是代码:vec3.h#pragma once#include &lt;math.h&gt;#include &lt;stdlib.h&gt;#include &lt;iostream&gt;class vec3{public: vec3() {} vec3(double e0, doub...

2018-06-20 20:48:05 2820 7

原创 c++控制台生成一张图片

直接上代码:#include &lt;fstream&gt;#include &lt;iostream&gt;using namespace std;int main(){ int ScreenSizeX = 200; int ScreenSizeY = 100; ofstream fout("OutputImage.ppm"); fout &lt;&lt; "P3\n" &l...

2018-06-19 09:46:56 4750 1

原创 怎么正确制作该死的LUT图

这图到底怎么制作,怎么校色?首先要知道这东西的原理,有一篇博客解释得不错,下面是传送门点击打开链接我来说说我的理解:是做了一个伪3D纹理的一个颜色查找替换。下面我就来记录一下这个东西的正确步骤(1)首先我们有个场景然后截一张图然后把它放到ps里(2)然后对其校色(3)把标准白天场景的color grading图置入然后拖拽到颜色修改图层下发然后导出即可...

2018-06-15 18:11:38 5958 2

原创 win10输入法程序员专用输入设置,妈妈再也不用担心我敲shader出错啦

直接上图

2018-05-15 16:57:12 4408

原创 【材质编辑器全解第三卷】超级CustomNode使用实例

先上效果吧:可以看到我的众多模型只使用一个CustomNode就实现了这个CustomNode是上次我们魔改的超级CustomNode,这个用来实现Ray Marching效果十分方便,上一节的传送门:点击打开链接CustomNode的代码如下:#define AA 1 // make this 1 is your machine is too slow//----------------...

2018-05-09 12:32:35 1295

原创 虚幻4渲染编程【第八卷:ComputeShader与其他Shader的数据通讯】

第七章探索了虚幻的computeshader ,传送门:第七卷,虚幻4中computeshader但是computeshader并不是声明完就完了,我们需要把它计算的结果拿出来使用。大概流程如下:我们可以把computeshader的计算结果在其他着色器中使用:我们把computeShader的计算结果保存在一个UAV中,然后把这个UAV作为一个Texture资源作为其他shader如Pixle的...

2018-05-07 20:19:57 1864 1

原创 虚幻4渲染编程【第七卷:虚幻4中的ComputeShader】

Computeshader非常胜任大量的计算,下面我们就在虚幻4中使用ComputeShader。先上效果图吧这是一张纯由ComputeShader计算出来的一张图片,代码来自Shadertoy。我下面的代码是基于我前面章节所写的代码的,想要知道从零是如何开始的,请从第二卷开始看。传送门:虚幻4渲染编程【第二卷】下面我们就用虚幻4的computeshader来生成它首先我们要声明一个Compute...

2018-04-29 15:44:46 1184

原创 虚幻4渲染编程【第六卷:虚幻4FTexture ,UVA,RT,Resource这些资源的关系】

为了后续更进一步的研究探索,我们有必要先搞清楚虚幻4代码中的一些资源到底代表了什么。UMaterial:持有逻辑线程相关的材质信息,作为逻辑线程的访问接口,管理其余两个渲染线程的类。FMaterial:负责管理渲染资源的类,渲染资源主要是shadermap的编译等。FMaterialRenderProxy:渲染代理,负责处理渲染的相关操作类。这三个类再加上由FMaterial管理的FMateria...

2018-04-28 20:03:16 943

原创 次世代材质大师【第二卷:材质基础】

【概述】第一卷已经大概描述了一下什么是材质,下面我们来对材质作进一步探索。现在的游戏工业大致有两个走向,一个是真实向如刺客信条起源等。一个是风格化向,如塞尔达,二之国等。特别是欧美等大作,都是喜欢写实风格,但是其实不管是那种方向,其实都感觉你中有我我中有你。就拿神秘海域4来说,其实他写实的背后也做了不少风格化处理,这一点很好论证,你拿刺客信条的画面和神秘海域的做对比就能轻易发现,各个写实类游戏都有...

2018-04-27 16:38:25 1571

原创 次世代材质大师【第一卷:概述和准备工作环境搭建】

【前言】      现在的次世代游戏,材质表现已经成为游戏中非常重要的一部分,本专栏将一步步简述游戏开发中的材质开发。    首先要普及一个概念,到底什么叫“材质”。是一个材质球吗?是一个shader吗?是几张贴图吗。我理解的材质准确地说应该叫 shading。请不要把它翻译为“着色”,我认为这是不对的。在计算机里shading包含了很多事情。一个材质的表现需要模型,贴图,shader,灯光,后期...

2018-04-27 14:23:23 713 1

原创 虚幻4渲染编程【第五卷:虚幻4 高级数据传输UniformBuffer】

    前面介绍了一般数据的传输方式,这一卷我们将一起来使用更高级的数据传输方式UniformBuffer。这个问题困扰了我两天,查了很多资料,翻了很多论坛也没找到解决办法。这里要特别感谢一位QQ昵称是“August”的朋友的指点帮助。    第四卷的传送门:https://blog.csdn.net/qq_16756235/article/details/80083722先看下效果吧可以看到这次...

2018-04-26 21:08:03 1305

原创 虚幻4渲染编程【第四卷:虚幻4C++层和Shader层的简单数据通讯】

本章将会在前几张的基础上进行讲解,如果你没看过前几章的话,这里是传送门:https://blog.csdn.net/qq_16756235/article/details/80045758先上效果图如下。我们在虚幻里实现了自己的shader的贴图映射。    经过前几卷的探索,我们现在已经可以通过自己的shader和Draw调用,在一个RenderTarget上绘制东西了。虽然最后还是通过材质编辑...

2018-04-25 18:58:18 1742

原创 虚幻4渲染编程【第三卷:虚幻4渲染编程第二卷自定义global shader代码例子详细解释】

先给第二卷的传送门,这一节就是在解释第二卷的代码的。https://blog.csdn.net/qq_16756235/article/details/80045173虚幻4有一篇教你怎么写globalshader的文档,但是我看了一遍后,感觉还是没说核心原理,只是教你怎么复制粘贴。下面就用我们上一节的例子(约三百多行代码)来窥探一下虚幻的渲染流程。例子虽然只有300多行代码,但是麻雀虽小五脏俱全...

2018-04-23 10:08:52 2702

原创 虚幻4渲染编程【第二卷:不用虚幻4Shader管线使用自己的shader】

先直接上效果:这个球的颜色是通过自己的shader实现的:下面就来一步一步实现使用自己的shader吧。首先我们先创建一个插件。插件其实相当于一个独立的模块,我不想再项目里做,当然再游戏模块里做也是没问题的。我们先把整个流程搞清楚了再去改引擎。首先创建个插件,名字取为ShadertestPlugin然后打开工程里的这个插件,在插件目录下加一个Shaders文件夹然后再在Shaders文件夹里加Pr...

2018-04-23 01:08:05 3723 3

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除