网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月25日漏签0天
unity吧 关注:52,462贴子:146,359
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 28回复贴,共2页
  • ,跳到 页  
<<返回unity吧
>0< 加载中...

李总教你图形学(一)

  • 只看楼主
  • 收藏

  • 回复
  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问:图形学中什么最重要
标准答案:首先得轻叹一口气,注意轻叹一口气的时机非常重要,在思考两到三秒后(其实是故作姿态),然后叹一口气。
哎,学问中哪来的高低贵贱,你想要了解什么,你就问吧。
问:什么是Shader
标准答案:请注意,在回答这种问题的时候,仅仅叹气已经不能体现你的业务水平了。一定要微微抬起头,转向一个没有人的方向,盯着天花板或者天空(取决于你所在的环境),眼神空灵,表情空洞。
表现出一副若有所思,若有所悟的样子,停顿两三秒种之后,微微叹一口气。
哎,shader,不过是管线式渲染体系GPU中的异构子程。
问:那什么又是异构子程呢
答:异构与同构,乃是哲学中研究主客体关系的一种概念。(其实很简单,必须要扯上哲学,才能凸显出业务水平)


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
开始开发地球上最简陋的软渲染引擎
我们将不使用一个像素,在100行代码内,开发一个基础的渲染引擎。
首先,新建一个控制台项目,我们说过的,不用像素,控制台程序不能绘图。

96行,展示了主循环,建立了一个六个顶点组成的模型,每帧清除画面,并绘制模型,这就是一个3D引擎了


2026-04-25 09:41:33
广告
不感兴趣
开通SVIP免广告
  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
运行。。。。


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3D引擎的本质就是在屏幕上画三角形,我们做到了,96行代s码。
在屏幕上画三角型就叫做光栅化,现在你已经可以深刻的研究,什么是光栅化。


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
光栅化就是根据三角形,画出屏幕上的一个个像素,我用的方法并不为高效,而只为清晰易懂。


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我用了在三角形的AABB碰撞盒范围内按照字符(像素)进行扫描的方法,扫描时判断每个点在不在三角形内。
这里用了一种叫做同向法的方法来判断,这个专题不讨论这种对业务(zhuangbi)水平没有帮助的基础问题,如果有基础知识的空缺,需要自己搜索补充一下。
接下去,我们要让个模型动起来。
在DX OGL的固定管线设计中,设计了三个矩阵去对顶点进行T&L操作,变换与光照。
在可编程管线中,就一个矩阵,传递给VertexShader,去做变换与光照。
矩阵是可以摸得着,看的见的东西,他并不神秘,接着往下看。
我们也会做一个VertexShader,Shader也并不神秘,往下做你自己就明白了


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
空间变换
为了让模型动起来,我们要对模型做空间变换,听上去好高大上,其实空间就是坐标系。
控制台屏幕,左上角0,0。右下角80,25,这就是屏幕空间。
而模型为了方便使用,一般会以模型的中点为零点,向三方向扩展描述一个模型的坐标系。
比如
y轴向上,x轴向右制作模型,让模型的脚底作为零点,让模型的高度为10
至少需要这些条件才能描述清楚一个坐标系
而模型的零点在他自己的坐标系中永远是零,而当他要在其他坐标系中出现的时候,他需要一个位置。
若要问在控制台屏幕上,我们的模型零点在哪?这就是空间变换。
模型是由顶点描述的,只要变换了每一个顶点,就变换了整个模型。


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
矩阵

为了对顶点做变换,我们加入了矩阵,用了一个3X4矩阵,这是3D变换中最常用的矩阵,有些数学库不提供3X4矩阵,用4X4可以兼容。
M11 m12 m13 m14
M21 m22 m23 m24
M31 m32 m33 m34
初看矩阵,会觉得这密密麻麻的数字,高深莫测。其实他却是最简单质朴,土的掉渣的数学工具。
矩阵就好像计算器,我们只写了一个顶点变换函数,输入顶点 xyz 由m11到m13功能决定输出的x,在加上m14.
矩阵的变换方法,仔细一看是非常简单的,就是用乘法和加法建立了关系。
对于算法,计算并不重要,计算所带来的意义才重要。就像小学生考数学必须手算,后来,考试就可以用计算器。
只要我们理解了算法的意义所在,知道何时应用一个算法能产生怎样的效果。
剩下的事情,交给计算器去做吧。


2026-04-25 09:35:33
广告
不感兴趣
开通SVIP免广告
  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
然后运行一下


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
是不是很有趣呢,旋转跳跃我闭着眼,用你强大的空间想象(脑补)能力把它想象成师洋在跳舞娘,简直停不下来啊。
旋转是通过改行列式的值


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
M14 M24 是XY的偏移,如果你渐进的改编他们,就可以获得跳跃的效果
M11 M22 的修改可以产生缩放,我们也让他动起来,像眯眯眼一样。


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

矩阵建议你自己玩一玩,这里只要建立起矩阵能干什么,怎么做到的这个基本的概念。
知道矩阵的合成,剩下就可以交给那些数学库去完成了,没要必要什么都自己算。
搞图形,最重要的是空间想象(脑补)能力


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Shader
Shader简单到什么程度呢,你如果读到这里,在havefun1的源码中早就窥透了Shader


  • M4L1
  • 声名远扬
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
所谓Shader,就是把顶点变换,和像素输出,两个步骤,抽象成为了两个函数,再配合一些参数。
Shader就是程序,还记得我们是在哪里破功的么
问:那什么又是异构子程呢
答:异构与同构,乃是哲学中研究主客体关系的一种概念。(其实很简单,必须要扯上哲学,才能凸显出业务水平)
我们这个不足200行的引擎中的Shader 是和引擎一样用C#编写的,同构子程序。
而GPU中执行的Shader要用专门的语言编写,hlsl cg glsl,和引擎编写的程序不同,异构子程序。
区别,仅仅就是这样。


2026-04-25 09:29:33
广告
不感兴趣
开通SVIP免广告
  • wh139130
  • 默默无闻
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 28回复贴,共2页
  • ,跳到 页  
<<返回unity吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示