Giter Club home page Giter Club logo

blender's People

Contributors

aligorith avatar antonioya avatar ben2610 avatar blendify avatar brechtvl avatar dfelinto avatar dingto avatar drsybren avatar hansgoudey avatar ideasman42 avatar jacqueslucke avatar jannekarhu avatar jbakker-atmind avatar jeroenbakker-atmind avatar jesterking avatar joeedh avatar julianeisel avatar kjym3 avatar lazydodo avatar lichtwerk avatar lukas-toenne avatar lukastoenne avatar moguri avatar nicholasbishop avatar pablodp606 avatar psy-fidelious avatar richardantalik avatar sergeyvfx avatar significant-bit avatar tonroosendaal avatar

Stargazers

 avatar  avatar

Watchers

 avatar

blender's Issues

Asset library for scripts

Decide if Asset libraries are a good fit for managing scripts on a higher level:

  • The actual assets might be source code, or an intermediate representation that can be serialized. Perhaps IR code is stored and the source is only referenced, much like Image data blocks can have an optional source file reference.
  • Source/IR code will need to be compiled at runtime before being usable. The final generated code should not be serialized. IR will be faster to compile.
  • The asset library might work as a namespace to prevent name conflicts. Using functions from an asset library in a script will require "using " or similar.
  • Capabilities and restrictions could perhaps be added per asset library. This enables the use of specialized functions that are only available in specific contexts (shaders vs geometry nodes etc.) This way such dependencies don't have to be specified for each individual script.

Include fields in type declarations to determine if final inputs/outputs are implicit or explicit fields

Right now all node socket inputs are declared as "support_field" while outputs are "dependent_field". This will need to be refined a bit when internal functions of the script can

  1. Have implicit field inputs, meaning their inputs in turn will be implicit fields (semantic difference, just indicates it will never collapse to a constant)
  2. Have field source nodes that always output a field and never a constant. Any output using these will also become a field source.

Improve function matching to ensure the best match is selected

Currently the first function where all arguments can be implicitly converted will be chosen, which may not be ideal. E.g. if there are two variants

foobar(int a)
foobar(float a)

and the caller uses a float argument, the int variant might be selected (based on arbitrary order in the map) because float a can be converted to int a even though it loses precision.

Remove unused token types from tokenizer

The tokenizer currently detects a number of tokens that have been copied from gdscript but are not used in Blender. Some will eventually get implemented, but its easy to add tokens when needed. Remove the unused tokens for now to avoid confusion.

Cleanup: Naming of MFScriptProcedure

This describes a function/procedure as part of a script, with additional metadata such as a function name and parameter attributes for UI integration. The name is easy to confuse with the actual MFProcedure, and the variables names used for it are inconsistent: "proc", "script", "code", etc.

Need to come up with a distinct name for this thing and clean up its usages. Also consider potential future function types that are not necessarily MFProcedures, such as geometry "node" networks, fields, etc.

Revisit design for "block types" to control stack unrolling

Currently special block types such as Loop and Match are used to delimit the variable stack and ensure contine and break statements destruct the correct amount of stack variables. This works but it's not very elegant. E.g. we need a secondary block for loops to ensure that the condition variable is destructed: unrolling stops at the Loop block, so the condition variable would not be destructed at the end of an iteration.

The concept of stack delimiters should be separate from Blocks which are used to indicate variable scope. Maybe its just a matter of making unroll inclusive, so the matching block is also unrolled and extra blocks can be avoided.

Basic optimizations to remove unused instructions and noops

Currently emitted code contains many instructions whose outputs are never actually used, such as default parameter initializations.
Basic optimization passes should be able to remove these quite easily. It should also be possible to avoid some de-facto noops, in particular when copying values that are not used anywhere else.
Defining procedure instructions in terms of static single assignment form (SSA) should help with creating these optimization passes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.