SRP学习笔记

SRP是什么

Unity2018添加了对可编辑渲染管线的支持,让从头搭建渲染管线成为可能,虽然在许多个别的步骤(如剔除 culling)仍然需要依赖Unity。Unity2018还介绍了用这种方法创建的两个渲染管线,轻量级渲染管线(lightweight pipeline)和高清渲染管线(highdefinition pipeline).目前这两个渲染管线仍处于预览状态,可编辑渲染管线的API也被标记为测试技术。但这已经足够让我们用于创建自己的渲染管线了。

  • 简而言之就是可以在unity里面用C#和SRP API写出C++里面用OpenGL类似的效果。
  • 所谓定义渲染管线,就是一系列的OpenGL API的调用过程,数据组织的过程。

OpenGL学习笔记 第三周:shader的使用

前言

  • 一周时间学会了一件事,怎么把前两周的纯OpenGL绘制改成shader绘制。
  • 之前对unityshader比较熟悉,因此编写shader本身没啥新收获。但是对于C++代码层面如何的包装shader和调用上收获颇丰。
  • 学完后更加深入的体会到,shader作为在GPU上执行的函数的意义。同时对于渲染一个物体都需要哪些数据有了更深刻的认知。

OpenGL学习笔记 第二周:2D

几个概念

  • glutInitWindowPosition(int x, int y) // 定义窗口位置

  • glViewport(GLint x, GLint y, GLsizei width, GLsizei height) // 定义视口大小

  • glutInitWindowSize(int width, int height) // 定义窗口大小

OpenGL学习笔记 第二周:摄像机操作

OpenGL中如何设置摄像机

  • 在OpenGL中设置camera只需要下面的API即可
    • 前三个是camera的position,可以理解为眼睛的位置,变量命名很贴切。
    • 中间三个是视点的位置,可以理解为你看着那里
    • 后面三个是摄像机的Y轴向量
    • 实际上center-pos产生的向量是作用于x、z两个轴,因此这9个变量就决定了摄像机的位置和朝向。

OpenGL学习笔记 第二周:光

光源基础

  • glEnable(GL_LIGHTING) 开启光的使用
  • glEnable(GL_LIGHT0) 使用第一个光,在OpenGL中默认有8个light可以使用

DirectionLight

  • 平行光最重要的属性是位置。可以通过下面的代码设置:
1
2
   float LightPos[] = { 0.0f,1.0f,0.0f,0.0 };
glLightfv(GL_LIGHT0, GL_POSITION, LightPos);

OpenGL学习笔记 第二周:模型的显示

模型数据的解析

  • 以下是读取到的数据,从这个数据可以看出来第一部分是顶点数据。这个只是不重复的数据而已。
  • 第二部分叫做绘制指令,一行有三组数据,表示一个三角型的三个顶点。所以有几行就说明这个模型由几个三角型组成。
  • 每一组数据说明了这个顶点的pos、texcoord和normal 在第一部分的索引,就是得到的数字-1。
  • 例如:F中第一组数据是 1/1/1 (pos/texcoord/normal)代表的含义是这个顶点的数据是v、vt、vn的第一行。
  • 因为顶点是会共用的,所以可以看到第二行数据有重复,但是因为绘制模型是按照三角型逐个绘制的,因此这些数据还是必须记录下来。

OpenGL学习笔记 第一周:环境构建、OpenGL基础

构建环境

windows上创建一个窗体

  • 定义窗体类,用到了WNDCLASSEXRegisterClassEx函数。

  • 创建窗体

    • 计算一个合适的窗体大小,用到了AdjustWindowRect
    • 创建HWND hwnd = CreateWindowEx(NULL, "GLWindow", "OpenGL Window", WS_OVERLAPPEDWINDOW, 100, 100, windowWidth, windowHight, NULL, NULL, hInstance, NULL);
  • 展示窗体:ShowWindow(hwnd, SW_SHOW);

MacOS部署Jenkins,打包unity

准备Jenkins

  • 终端输入brew install jenkins,用这个方式安装本质还是个war包,但是不用再安装Tomcat
  • 安装好后直接在终端输入jenkins启动应用,浏览器输入localhost:8080可以打开。
  • 网上有8080端口被占用的处理办法
  • brew安装失败大概率是因为githubusercontent被墙了,要么梯子,要么修改Mac上的hosts,方法如下:
    • sudo vi /etc/hosts
    • https://www.ipaddress.com/查询raw.githubusercontent.com的当前地址
    • 然后在hosts里面加入,当前的IP是199.232.28.133 raw.githubusercontent.com
  • 网页打开后第一次要注册,然后会提示安装插件,最后就可以进入Jenkins。基本上准备工作没啥难度,除了网速。

How I build games with Entitas 摘要

  • 这篇文章并不会讲解entitas的功能,作者在文章中主要谈了谈他如何利用entitas开发清晰、稳定和灵活的代码结构。这篇文章可以说是对于ECS的一种实践的总结,同时也是对于Entitas的使用总结。
  • 文章会介绍如下的话题:
    • 定义:数据、逻辑和视图层
    • 维护它们彼此的独立
    • 通过接口进行抽象
    • IOC
    • 视图层抽象(视图和视图控制器)

Unity ECS:C# Job System文档总结

背景、初衷、目标

  • 出现的背景、初衷就是:天下苦无多线程久已
  • 当然这个说法要进一步的约束,首先unity中可以编写多线程代码,但是最大的问题是多线程中无法使用unity API,当然也无法修改component中的数据了。
  • 目前来看似乎这个技术就是为了能够让开发者使用multithread来操作unity API和component 数据。

优势和劣势

  • 多线程就是优势
  • 可操作的数据类型限制比较大,目前只能是blittable data type
  • 这个多线程是和unity引擎共享work thread,所以变相的侵占了引擎层的性能。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×