zoukankan      html  css  js  c++  java
  • GameKnife_0.9.6 渲染系统初步竣工!

    一个星期没写日志了,今天终于比较有时间了,花了2个多小时整理硬盘...实在太乱了,桌面上图标在两小时前已经占满半个屏幕了....(我的屏幕是1920*1080的),DARE的项目文件,特效合成的工程和资源文件,各种文章,归档,整理...

    这几天没闲着,一直在设计,抽象,封装。之前研究的一系列前期shader渲染技术和后期处理的shader技术被设计成了和现代游戏引擎相类似的结构。一个shader配合一系列参数(高光,贴图,色彩等参数)被抽象为“材质”;每一个材质又可以赋给多个gameobject,这样,渲染场景其实就是使用“材质”去设置渲染要用到的VS和PS,然后每个gameobject设置world矩阵,调用自己的渲染器渲染。

    最终的卡通材质+像素光照+GLOW全屏辉光效果
    感觉稍微有点过...

    这里的设计和抽象可能还有一些问题,可能对于高手来说,有点贻笑大方了。我在设计和抽象之前其实看了很多程序和资料。DX自带的SAMPLE中是以MESH中的MATERIAL为主序的,所以一个场景中有多个物体包含N个MATERAL时,就需要创建N个EFFECT打开N个PASS去渲染这些MESH。感觉代价可能会比较大。所以采用了我现在的这种设计。

    目前的材质系统比较通用和易用,因为我现在制作的SHADER能在DIRECTX,3DS MAX, FX COMPOSER中共用,因此可以使用3DS MAX作为材质编辑器,赋予材质来调节模型需要的效果,然后输出一个带有简单MESH的X文件,作为材质文件。命名为ksMat_xxxx.x,然后再在程序中使用这个文件创建一个kMaterial,之后,将每个材质赋予需要这种效果的gameobject,便完成了gameobject渲染的配置。

     在3DS MAX中配置材质,调节参数,最后保存为材质文件

    在3DS MAX中其实也可以玩一些后期处理效果...

    后期处理系统,我花了将近两天的时间精读了DX SAMPLE自带的POST PROCESS这个例子,了解了相当多的原理,并且逐行给予注释。之后,花了一个下午的时间将它封装到我设计的一个kPPManager类中。以便于自己使用。

    目前的后期系统使用也比较便捷,建立一个kPPManager之后,使用InsertEffect函数按照顺序添加需要执行的效果,然后在每一帧的前后调用preRender和postRender即可完成后期处理。

    目前的后期处理效果已经达到目前主流游戏中常使用的"全屏辉光","高斯模糊","精密卡通描边"等效果。

    高斯模糊
    和PHOTOSHOP原理相通

     

    基于法线图的描边
    可以做出精密的卡通勾边效果
     

    目前这些系统还只是初步竣工,在实际项目中,可能还要再抽象几个使用它们的类,完成快速的关卡搭建,这可能又要用到上学期做的MAX插件了。目前这学期DX的结课项目也开始启动了,这星期确定下来策划之后下周开始动工写场景搭建和管理的模块了。

    Ps. 这次就不贴代码了,目前还没有想好这个gameKnife的性质,目前源码只在学习交流中给过一个信得过的好友。剩下就是同组的程序员了。这个工程最后选择共享给大家的话我还是想要最后做成一个完整的引擎再共享,否则半途共享之后怕落得自己也没了继续制作的兴趣了...

  • 相关阅读:
    文件上传漏洞之js验证
    文件上传漏洞靶机upload-labs(1到10)
    URI/URL/URN都是什么
    解压jdk报错gzip: stdin: not in gzip format
    burpsuite常见问题
    C/C++字符串反转的N种方法
    转 二叉树之Java实现二叉树基本操作
    MySQL 面试基础
    转 MySQL中的行级锁,表级锁,页级锁
    MySQL问题排查工具介绍
  • 原文地址:https://www.cnblogs.com/gameknife/p/1832164.html
Copyright © 2011-2022 走看看