标签:vertex-shader | 智问智答
文章推薦指數: 80 %
gamedev解决问题部分:《我可以用gl_Position 的第四个组件做什么?》 ... Range(0, 5.0)) = 1 _Frequency ("Frequency", Range(0, 1.3)) = 1 _Amplitude ("Amplitude", ...
智问智答>gamedev大分类
【gamedev】标签:vertex-shader
我可以用gl_Position的第四个组件做什么?
👍12
当我设置gl_Position我通常给它分配等gl_Position=vec4(in_position,1.0),其中in_position作为代表我的模型的顶点三个部分组成的向量。
但是查找教程之类的,gl_Position除了使向量足够大以便可以对其应用矩阵变换之外,我找不到任何解释vec4的第4个组件正在做什么的任何内容。
问:gl_Position的第4个组件可以做什么/它在渲染过程中有什么影响?
shaders
glsl
vertex-shader
dot_Sp0T
201801-11
为什么复制我的对象会导致它的顶点动画着色器扭曲它?
👍9
我使用了一个顶点着色器(基于这个例子)来制作挥舞旗帜的动画。
当我的场景中有一个标志时,它可以正常工作。
当我复制旗帜时,所有副本在我点击播放后都变得非常扭曲。
这是我正在使用的着色器代码:
Shader"Custom/Flag"{
Properties{
_MainTex("Albedo(RGB)",2D)="white"{}
_Speed("Speed",Range(0,5.0))=1
_Frequency("Frequency",Range(0,1.3))=1
_Amplitude("Amplitude",Range(0,5.0))=1
}
SubShader{
Tags{…
unity
shaderlab
vertex-shader
SeyedMortezaKamali
201707-02
如何在我的游戏中以最佳方式制作自定义角色面部编辑器?
👍7
在许多游戏中,都有作为自定义角色的部分,您可以制作自己的角色。
我总是喜欢知道如何制作类似的东西。
老游戏也有这个功能?但是怎么样?
为了实现它,我需要准确的分离值和面部部位大小之间的通信。
所以首先我根据面部部分制作了多个高度图,以便通过顶点着色器进行修改并正常工作,但是这种方法不是最佳的。
我可以仅通过一个纹理实现它吗?
然后我尝试使用彩色贴图纹理来检测面部部分,但是在我的着色器代码中从贴图纹理获取颜色值时遇到问题。
映射纹理:
我的问题是我的顶点着色器与我的贴图纹理不匹配。
例如,如果我改变_NoseLength其他部分会发生变化。
我怎么能告诉顶点着色器哪个部分是鼻子,额头,嘴唇,脸颊,...在我的多彩映射。
这是我的着色器代码:
Shader"Custom/Extrude"{
Properties{
_MainTex("Base(RGB)",2D)="white"{}
_ModTex("VertexModify",2D)="white"{}
_NoseLength("NoseLength",Range(-0.05,0.01))=1.0
_LipSize("LipSize",Range(-0.05,0.01))=1.0…
unity
shaderlab
vertex-shader
SeyedMortezaKamali
201707-05
为什么我们要乘以透视*模型视图*点?
👍3
顶点着色器中的一条常见线是:
gl_Position=projection_matrix*model_view_matrix*object_space_vertex;
这个我看了很多,为什么不写成这样
gl_Position=object_space_vertex*model_view_matrix*projection_matrix;
?
我想那会更直观。
它在数学上是错误的吗?
opengl
shaders
glsl
vertex-shader
user3834459
lucky-day
如果顶点多于像素,在片段着色器中进行更多计算是否有意义?
👍1
我对图形编程很陌生,据我所知,顶点着色器被称为每个顶点,片段着色器被称为每个像素(忽略抗锯齿)。
当谈到优化时,我提到的所有来源都说可以在任何一个着色器中完成的计算都应该在顶点着色器中完成,这是有道理的:5*8完成3次比5*8完成300'000好得多(例如640×480)。
这对于这个比例来说很好,但问题几乎是这样提出的:当顶点数量超过分辨率时会发生什么。
这是一个实际的例子:一个典型的AAA游戏在屏幕上可能有多达3'000'000个多边形渲染,为了简单起见,我们假设它是一个非常详细的三角形带,它正好有3'000'002个顶点;而全高清屏幕有1920*1080?2'000'000像素。
如您所知,一百万次操作的差异可能会显着提高性能。
我的思考过程是否合理,或者我对某些细节的无知是否有不足之处?
graphics
shaders
graphics-programming
fragment-shader
vertex-shader
201806-22
标签统计
vertex-shader×5
shaders×3
glsl×2
shaderlab×2
unity×2
fragment-shader×1
graphics×1
graphics-programming×1
opengl×1
用户统计
SeyedMortezaKamali..×2
dot_Sp0T..×1
user3834459..×1
💵本站托管于腾讯云活动价是真香
延伸文章資訊
- 1gl_Position - GLSL ES 3 - docs.gl
The variable gl_Position is intended for writing the homogeneous vertex position. It can be writt...
- 212.5 - GLSL Built-in Functions and Variables — LearnWebGL
gl_Position : a vec4 position of a vertex in “clip coordinates”. ... The values for x and y are i...
- 3Advanced GLSL - LearnOpenGL
Setting gl_Position in the vertex shader is a strict requirement if you want ... position's z val...
- 4Why is 'gl_Position' a different data type than 'position' - Stack Overflow
- 5Coordinate Systems - LearnOpenGL
What we usually do, is specify the coordinates in a range (or space) we ... The resulting vertex ...