- 博客(27)
- 收藏
- 关注
原创 Maya OrientJoint Python
joint的X轴对准子物体(调整orient,不考虑rotate)将joint的Rotate属性转移到JointOrient上。maya的orientJoint功能。显示joint的轴,
2023-01-29 19:45:29
360
原创 Quaternion 四元数
q = a + bi + cj + dk 共轭为 q* = a -bi - cj - dk。交换律一般不成立, 当。向量平行时,可以交换。结合律,分配率成立,
2022-10-06 18:22:05
165
原创 投影矩阵DirectX
将传入的ViewSpace下的坐标视为右手系下的坐标。平截头体在Z轴负向。P坐标(0,0,-nearZ)平移,使P点到原点O。矩阵M1ViewSpace近平面半高MP=tan(fov/2)*nearZ近平面半宽AM=tan(fov/2)*nearZ*aspect深度差PP’=farZ-nearZ原点缩放,使近平面半高为nearZ,使近平面半宽为nearZ,使远平面半高位farZ,使远平面半宽为farZ,使深度差为farZ;........................
2022-07-31 14:27:42
392
原创 几何着色器
几何着色器用途 添加几何体,删除几何体 改变图元类型Shader "may/Geometry Shader"{ Properties { } SubShader { Tags { "Queue" = "Geometry" "RenderType"="Opaque" } LOD 100 Pass { Tags{"LightMode" = "F...
2022-05-17 21:50:31
380
原创 曲面细分着色器
曲面细分:Hull Shader, Tessellation, Domian Shadertessellation学习迈克老狼2012 (cnblogs.com)Shader "may/my Tess"{ Properties { _BaseColor ("Base Color", 2D) = "white" {} _Tessellation( "tesselation " , Range(1, 64)) = 1 } ...
2022-05-13 09:00:04
150
原创 深度测试
深度测试:ZTest [_ZComp] shader属性Enum( / LEqual / Always / Never(Off) / Greater / Less /GEqual / Equal / NotEqual相机位置1 :绘制顺序:绿红蓝相机位置2:绘制顺序:绿蓝红红:LEqual 绿:LEqual 蓝:Greater渲染队列都是2000Shader "may/Depth test"{ Properties { ...
2022-05-06 13:29:14
449
原创 Stencil模板测试
逐片元操作:透明度测试,模板测试,深度测试,深度写入,混合使用模板缓冲区, 每帧开始时所有像素对应的缓冲区的value 为 0。使用模板测试做效果,一般三部分组成, mask(用平面在Stencil缓冲写入), 外框(可有可无,默认的Stencil设置),模板测试模型(只有与之前写入的Stencil value 相同 才能显示)。Stencil { Ref [ _StencilRefValue ] / 0 / 1 … ReadMask WriteMask Co..
2022-05-06 08:52:48
228
原创 Flow Map
Shader "may/FlowMap"{ Properties { _ColorTint ("Color Tint", Color) = (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) = "white" {} _FlowMap("Flow Map", 2D) = "black"{} _FlowSpeed ("Flow Speed", .
2022-05-05 09:45:02
185
原创 Gamma校正
Gamma使用:对线性的物理变化,人的视觉感受不是线性变化的。当带宽和内存有限时,图片需要压缩,此时可以先调亮图片,在压缩,使用或查看时,再调暗Unity选择颜色空间:当使用默认Gamma空间:输出 fixed4(i.uv.xxx, 1);...
2022-05-03 17:11:28
849
原创 凹凸映射 法线 视差
法线映射: 世界/模型空间的法线贴图:直接得到模型空间法线,便于计算,一般只能用于特定模型 切线空间的法线贴图:可以复用。//使用切线空间法线纹理,在切线空间计算光照...
2022-05-03 14:21:59
227
原创 Unity Shader Lab 模型切线和法线
DCC法线与切线绿:法线, 红:切线, 蓝:副切线uv channel 0法线由DCC软件确定,一般使用两种:(该点为三根线的端点)三根法线合一,为相邻三个面法线的平均,在shader中视作一个点,与相邻面法线 同向,视作三个点,可能因为一个点对应的inputlayout 只对应一组 NORMAL语义,切线(作为切线空间的x轴)方向必定与法线方向垂直,并且与uv坐标的 u轴在垂直法线的平面的投影向量 同向,法线变换:shaderlab 中:NORNAL..
2022-03-28 14:06:10
5185
原创 Bindable和Drawable
视频Directx3D11box在构建时,完成资源创建,包括vertexBuffer,IndexBuffer,layout,Shader等,并将指针保存在Drawable::vector<Bindable>中,在Doframe()调用 Draw 虚函数,Bindable和子类:用于创建资源(需要Device指针,在Box构造函数创建),和绑定到管线(每帧调用)。Drawable子类Box:作为mApp数据成员,Draw函数用于 调用Bindable的绑定 和 调用Draw
2022-02-28 11:13:38
116
原创 DirectX 使用深度缓冲
#include"mGraphics.h"#include<xutility> //std::size#include<DirectXMath.h> //Matrix Vetor#include<d3dcompiler.h>#pragma comment(lib,"d3d11.lib")#pragma comment(lib,"d3dcompiler.lib") mGraphics::mGraphics(HWND outputWindowHandle.
2022-02-15 20:51:01
844
原创 使用常量缓存
void mGraphics::DrawTriangle(float angle){ struct ConstantBuffer //用于创建常量缓冲的布局 { float rotaror[4][4]; }; ConstantBuffer cBuffer{ //用于创建常量缓冲的数据 cos(angle),sin(angle),0,0, -sin(angle),cos(angle),0,0, 0,0,1,0, 0,0,0,1 };.
2022-01-30 11:21:35
447
原创 dx绘制三角形
创建Buffer,并绑定。创建读取像素着色器,并绑定。创建读取顶点着色器,并绑定。创建顶点着色器输入布局 layout,并绑定。绑定,渲染目标,作为输出。基本拓扑设置。NDC映射到屏幕坐标。最后绘制。MGraphics.cpp#include<d3dcompiler.h>#pragma comment(lib,"d3dcompiler.lib")void mGraphics::DrawTriangle(){ //创建Buffer struct
2022-01-29 09:57:41
461
原创 DirectX应用层
app.h#pragma once#include "MyWindow.h"#include "MyTimer.h"class App{public: int Go();//初始化游戏逻辑,包含消息循环,private: void DoFrame();//处理每一帧的游戏逻辑private: Window wnd{600,400,L"iiii"}; MyTimer timer;};app.cpp#include "App.h"#include <.
2022-01-21 22:03:02
331
原创 添加窗口图标
文件:[项目名].rc Microsoft Visual C++ generated resource script.······IDI_MYICON ICON "icon1.ico"resource.h 对应文件的宏名,······#define IDI_MYICON 101window.cppWindow::WindowClass::WindowC...
2022-01-16 18:22:07
472
原创 Window类
myWindow.h#pragma once#include<Windows.h>class WindowClass//单例设计{public: static const wchar_t* GetName()noexcept; static HINSTANCE GetInstance()noexcept;private: WindowClass()noexcept; ~WindowClass(); WindowClass(const WindowClass&) .
2022-01-15 15:26:12
405
原创 创建 windows 窗口基础内容
入口点:WinMain function (winbase.h) - Win32 apps | Microsoft Docs参数:当前应用的实例的句柄,应用先前实例的句柄(总为nullptr),应用命令行,控制窗口显示方式(保持默认);注册:RegisterClassEx(const WNDCASSEX*)接收结构体WNDCASSEX表示窗口的信息:typedef struct tagWNDCLASSEXA { UINT cbSize; //结构体大小
2022-01-13 18:39:52
274
原创 KMP算法next
void GetNext(SqString t,int next[],int len) { int j, i; j = 0; i = -1; next[0] = -1; while (i < len - 1) { if (k==-1 || t[j]==t[i]) { j++; i++; next[j]=i; } else { i=next[i]; } }}初始:某次循环开始:...
2022-01-04 15:04:23
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人