shaderlab 学习笔记

首先申明,本人也是初学,有很多不懂的地方,图形学的基础也不是很好,还希望大家共同指点学习。

在shaderlab 中基本了解了渲染流程以后,就开始尝试一些基本的shader练习

第一开始挑选了镜面反射的例子

shaderlab 是高级的渲染语言,在cg里的矩阵除了下述找到的,还有一些没有发现

UNITY_MATRIX_MVP
Current model*view*projection matrix
UNITY_MATRIX_MV
Current model*view matrix
UNITY_MATRIX_P
Current projection matrix
UNITY_MATRIX_T_MV
Transpose of model*view matrix
UNITY_MATRIX_IT_MV
Inverse transpose of model*view matrix
UNITY_MATRIX_TEXTURE0 to  UNITY_MATRIX_TEXTURE3
Texture transformation matrices

Built-in vectors

Vectors (float4) supported:

UNITY_LIGHTMODEL_AMBIENT
Current ambient color.
注意到有环境光的矩阵,但是没有找到其他灯光的位置和颜色的矩阵,这样就在算镜面算法的时候很难受,至今没有解决,还希望有高人指点。难道就只能有unity给的几个光照模型么?那么反射系数又在哪里?

之后的试点矩阵有两种解决方案

1WorldSpaceViewDir( v.vertex );

2 通过摄像机的代码将摄像机的矩阵传入。  但是至今也不知道对于两种方式的区别。


对于基本的矩阵没有完全熟悉,但是不敢停留,继续看了渲染流程后开始熟悉顶点渲染和片段渲染,功能就不一一概述

shaderlab 是通过

#pragma vertex vert
#pragma fragment frag

来定义两个过程的函数得。

在顶点模式中计算的顶点坐标,纹理坐标,光照坐标...直接通过在片段渲染函数的参数传递到片段渲染中。

值得注意的是在顶点渲染的函数中返回的是顶点的结构体,而在片段渲染中则返回half4值。

由于很多问题没有解决,最后通过计算视点的方向写了一个很简单的镜面模型。

如图


还希望大家共同指点,共同学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值