0%

相关书籍

C++ :

光线跟踪V1(版本①):最简单的框架

根据书的顺序把源程序列出来,一个光线跟踪最简单最基本的场景

光线跟踪最基本场景

Ray.h 光线_工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef _RAY_
#define _RAY_

#include"Point3D.h"
#include"Vector3D.h"

class Ray {

public:
Point3D o;//origin 光线发射点
Vector3D d;// direction 朝向 用向量定义
Ray(void); //default constructor 默认构造函数
Ray(const Point3D &origin, const Vector3D &dir);//constructor 构造函数重写
Ray(const Ray& ray);// copy constructor //复制构造函数


Ray&//assignment operator 赋值运算符
operator=(const Ray& rhs);
~Ray(void);//destructor 析构函数
};
#endif

1.一个基础的Unity Shader结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//起名与控制出现的位置 Shader->Unlit->S1
Shader "Unlit/S1"
{
/**************************************************************/
Properties
{
//属性的变量名字 ("显示在面板上的名字",类型)= 值
_MainTex ("Texture", 2D) = "white" {}

//所有属性的例子
// Numbers and sliders
_Int (" Int", Int)= 2 //整形
_Float ("Float", Float)=1.5 //浮点数
_Range("Range", Range(0.0, 5.0))=3.0 //范围
// Colors and Vectors
_Color ("Color", Color)=(1, 1,1,1) //颜色
_Vector ("Vector", Vector)=(2,3,6, 1)//向量
// Textures
_2D("2D",2D)=""{}
_Cube ("Cube", Cube)="white"{}//内置纹理
_3D("3D",3D)="back"{}
}
/************************************************************/

SubShader
{

Tags { "RenderType"="Opaque" }
/*一些Pass



*/
LOD 100
//pass过多会影响性能
Pass
{ //定义名称提高复用性 UsePass"MyShader/MYPASSNAME" Unity会把Pass名称转为大写
Name "MyPassName"
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog

#include "UnityCG.cginc"

struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};

struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
};

sampler2D _MainTex;
float4 _MainTex_ST;

v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}

fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
}

1.1 SubShader的RenderSetup和tags

1
2
3
4
5
6
7
8
9
10
11
SubShader 
{
//可选的
[Tags]

//可选的
[RenderSetup]

Pass{
}
//other Passes

SubShader_RenderSetup 渲染设置参数 例如双面渲染或者Cull剔除背面对正面进行渲染

1577523747076

SubShader_Tags 如何渲染 只有在SubShader里的tag

状态名称 设置指令 解释
Cull Cull Back Front |Off 设置剔除模式:剔除背面/正面/关闭剔除
ZTest ZTestLessGreaterLEqualGEqualEqualNotEqualAlways 设置深度测试时使用的函数
ZWrite ZWrite On Off 开启/关闭深度写入
Blend Blend SrcFactor DstFactor 开启并设置混合模式
1
Tags { "TagNamel" = "Valuel" "TagName2" ="Value2" )

1.2 SubShader里的Pass块

1

透视课LV1作业1.1

1.画的时候在砖的地方遇到了问题,本来以为很简单,但是砖块我画成平面了,完全不立体hh
2.留待以后说不定什么时候就可以用来上色玩了呢233
3.感谢皓辰和WEIYE助教
4.留档,之后想到什么再说

LV8 Krenz透视课-第八堂课-主题:带景人物基础作业-Molers_Homework

透视课LV8作业8.1

1.五官,手,没有满意,线条也是粗略的加了一层轮廓没有考虑更深一层的线稿轮廓
2.小动物不会,直接抓型来着
3.丰富物件只能硬加,图案都是贴上去的
4.带景人物还好,只是人物增加的话会增加难度,没有规律(之后上构成课可能会解决)
5.帽子,褶皱有待加强
题外话:画的特别慢