Für dynamisch bewegende Vektoren normal machen

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Für dynamisch bewegende Vektoren normal machen

by Anonymous » 17 Feb 2025, 07:29

Ich habe versucht, fraktionierte Brownsche Bewegungen zu implementieren. Während ich dynamisch Eckpunkte erstellt habe, habe ich auch normale Daten erstellt, da sich die Ebene in der XZ -Ebene befindet, und alle Normalen der Scheitelpunkte zeigen in die y -Richtung. diese normal machen. Ich überfahre Fragpos und Normalen an Fragment Shader, aber wenn ich versuche, den Normalen zu rendern, bekomme ich immer wieder einen Farbgradienten anstelle einer Linie, die den Normalen darstellt. < /P>
Eine andere Option, die ich ausprobiert habe Um einen separaten Zeichnenanruf nur für normal zu haben, aber da die Scheitelpunkte auf der CPU -Seite immer noch nur ein Flugzeug sind, bekomme ich immer wieder Linien, die durch Scheitelpunkte/Ebenen gelangen, nicht genau das, was ich will.
Gibt es eine Möglichkeit, den Normalen zu zeichnen, ohne einen separaten Ziehaufruf zu haben?
Code: https://github.com/SHREYAS9699/FBM-OPEN ... e]Fragment shader:[/code]

Code: Select all

void main()
{
// ambient
float ambientStrength = 0.1;
vec3 ambient = ambientStrength * lightColor;

// diffuse
vec3 norm = normalize(Normal);
vec3 lightDir = normalize(lightPos - FragPos);
float diff = max(dot(norm, lightDir), 0.0);
vec3 diffuse = diff * lightColor;

// specular
float specularStrength = 0.3;
vec3 viewDir = normalize(viewPos - FragPos);
vec3 reflectDir = reflect(-lightDir, norm);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32.0f);
vec3 specular = specularStrength * spec * lightColor;
vec3 result = (ambient + diffuse + specular) * objectColor;

if(showNormals)
{
// Render normals as a yellow color
vec3 normalColor = vec3(1.0, 1.0, 0.0); // Yellow color
vec3 normalVisualization = normalColor * abs(norm);
result = mix(result, normalVisualization, 0.5);
}

FragColor = vec4(result, 1.0);
}
ohne normal aktiviert:
https://i.sstatic.net/ddkqdbx4.png
Mit normalem Wert:
https://i.static.net/qsw9n16n.png
Erwartete so etwas für alle Scheitelpunkte.

Top