Origin of Ray

一起探索互联网的秘密

透明是游戏中经常使用的一种场景,在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道。当开启透明混合后,当一个物体被渲染到屏幕上,每个片元除了颜色值和深度值之外,它还有另一个属性,透明度。当透明度为1时,表示该像素完全不透明,当为0时,表示该像素完全不会显示。

在Unity中,我们通常使用两种方法来实现透明效果:第一种是使用透明度测试(Alpha Test),这种方法其实无法得到真正的半透明效果;另一种是透明度混合(Alpha Blending)。

阅读全文 »

之所以突然起了这篇文章,是因为这周工作中,使用单例模式实现了一个功能,,在code review的时候,被指出尽量不要使用单例模式,给了我几篇文章看,收获了一些内容,所以系统地总结下。

阅读全文 »

纹理最初的目的就是使用一张图片来控制模型的外观。使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素(为了和像素区分)的控制模型颜色。

美术人员在建模的时候,通常会在建模软件中利用纹理展开技术把纹理映射坐标存储在每个顶点上。纹理映射坐标定义了该顶点在纹理中对应的2D坐标。通常,这些坐标使用一个二维变量(u,v)来表示,其中u是横坐标,v是纵坐标,所以纹理坐标也称为uv坐标。

阅读全文 »

之前一篇博客讲过了进程存在的意义是什么,我们为什么要搞出进程这个概念。

但是随之而来的就是几个连续的问题,也是多道并发会遇到的几个问题:

  • 多个进程并发的时候,如何进行调度,调度的原则是什么?
  • 如果多个进程之间有相互依赖关系怎么办,比如同步和互斥关系?
  • 如果因为依赖关系,产生了循环依赖,可能导致死锁,又该怎么办?

这篇博客我们就第一个问题进行解释,那就是处理机如何进行调度的。

阅读全文 »

最近在开发一个Unity人物形象的SDK,目标是该SDK可以动态下载最新的人物和服装的模型而不用让提前内置在SDK中。

一开始我打算采用的方案是传统的比较成熟的Addressables去打包bundle的方式,但是bundle的划分是个问题,而且这种方式需要每次把模型导入unity然后再出包,再更新catalog,整个流程比较繁琐。

所以我就在想,能不能直接从远程加载FBX和贴图,然后直接使用FBX进行加载就好,这样整个发版流程会简单很多。

经过一番查找,找到了TriLib这个仓库,他可以很方便的从远程加载模型。但是也有一些问题,为了定位这些问题,特意阅读了下源码,这里总结下,其实感觉整个仓库的逻辑是比较简单清晰的。

阅读全文 »

我们正式开始学习一些能够应用的Shader,这次我们就从光照模型开始。本文中的代码和概念解读自《Unity Shader 入门精要》.

本文主要讲解书中的几种光照模型的原理和代码分析。

阅读全文 »

前面的几篇博客讲了游戏渲染的基本原理和如何在Unity里写一个Shader,这篇博客先插入两个概念:

  • Unity中不同物体之间的渲染顺序何覆盖关系是怎样的,也就是渲染顺序。
  • Unity的渲染路径又是什么,和渲染顺序有什么关系?
阅读全文 »
0%